Dada una string str , la tarea es imprimir todos los anagramas de la string dada que forman una palabra que existe en el diccionario inglés.
Nota: Para usar palabras del diccionario, se usa un archivo de texto donde se almacenan todas las palabras del diccionario.
Ejemplos:
Entrada: str = “tac”
Salida:
act
cat
Explicación:
Las palabras que se pueden formar a partir de la string dada “tac” son act, cat.Entrada: str = “atrew”
Salida:
tawer
agua
wreat
Explicación:
Las palabras que se pueden formar a partir de la string dada “atrew” son “tawer”, “water”, “wreat”.
Enfoque: La idea es usar el concepto de manejo de archivos y un archivo de texto (digamos palabras.txt ) que contenga todas las palabras significativas. A continuación se muestran los pasos:
- Ordenar la string dada .
- Abra el archivo words.txt usando el manejo de archivos ifstream para leer el archivo en C++ como:
ifstream palabras(“palabras.txt”);
- Para cada palabra en el archivo words.txt , ordene la palabra y compárela con la string ordenada dada.
- Si ambas strings coinciden en el paso anterior, imprima la palabra actual en el archivo words.txt .
- Cierre el archivo después de que se hayan verificado todas las palabras.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function that sorts the given string // and transform a sorted string to uppercase string sortString(string word) { // Transformed to uppercase transform(word.begin(), word.end(), word.begin(), ::toupper); // Sort the words sort(word.begin(), word.end()); return word; } // Function that finds the anagram of // given string in the given text file void jumbledString(string jumble) { // Initialize strings string checkPerWord = ""; string userEnteredAfterSorting; // Sort the string userEnteredAfterSorting = sortString(jumble); // Using filehandling ifstream // to read the file ifstream words("words.txt"); // If file exist if (words) { // Check each and every word // of words.txt(dictionary) while (getline(words, checkPerWord)) { string Ch = sortString(checkPerWord); // If words matches if (Ch == userEnteredAfterSorting) { // Print the word cout << checkPerWord << endl; } } // Close the file words.close(); } } // Driver Code int main() { // Given string str string string = "tac"; // Function Call jumbledString(string); return 0; }
Enlace al archivo de texto: Enlace
Publicación traducida automáticamente
Artículo escrito por NANDINIJAIN y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA