Dado un diccionario de strings dict[] y una array de caracteres arr[] . Imprime todas las palabras válidas del diccionario que son posibles usando caracteres de la array de caracteres dada.
Ejemplos:
Entrada: dict – [“ir”, “bate”, “yo”, “comer”, “objetivo”, chico”, “correr”]
arr[] = [‘e’, ‘o’, ‘b’, ‘ a’, ‘m’, ‘g’, ‘l’]
Salida: “go”, “me”, “meta”.
Explicación: Solo todos los caracteres de estas tres strings están presentes en el diccionario.Entrada: Dict= [“goa”, “cebo”, “lío”, “comió”, “objetivo”, “niña”, “lluvia”]
arr[]= [‘s’, ‘o’, ‘t’, ‘a’, ‘e’, ’g’, ‘l’, ‘i’, ‘r’]
Salida: “goa”, “ate”, “goal”, “girl”
Enfoque: El problema se puede resolver comprobando los caracteres de cada string del diccionario. Si todos los caracteres de una string están presentes, entonces esa string se puede formar. Siga los pasos que se mencionan a continuación para resolver el problema.
- Concatenar todos los caracteres y hacer una string.
- Recorra cada palabra en una string y encuentre si todos los caracteres de cada palabra están presentes en una string concatenada o no.
Siga la ilustración que se muestra a continuación para una mejor comprensión.
Ilustración: Considere el siguiente ejemplo.
dict[] = [“ir”, “murciélago”, “comer”, “carne”, “objetivo”, “niño”, “correr”] ,
arr[] = [‘e’, ‘o’, ‘b’ , ‘a’, ‘m’, ‘g’, ‘l’]
- string concatenada = eobamgl
- ahora si cruzamos “go”
- indexOf(“g”) en “eobamgl” es 5
- indexOf(“o”) en “eobamgl” es 1
- Esto significa que todos los índices están presentes. Por lo tanto, imprimiremos «go»
- Si alguno de los índices no está presente, no se incluirá.
- De manera similar, «yo» y «objetivo» también satisfacen la condición.
Entonces, la salida es «ir», «objetivo» y «yo».
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ code to implement the above approach #include <bits/stdc++.h> using namespace std; // Function to print the words void printWord(string str, string s) { for (int i = 0; i < str.size(); i++) { if (s.find(str[i]) == string::npos) { return; } } cout << str << endl; } // Function to find the words void findWord(vector<string> str1, vector<char> str2) { string s = ""; for (int i = 0; i < str2.size(); i++) { s += str2[i]; } for (int i = 0; i < str1.size(); i++) { printWord(str1[i], s); } } int main() { vector<string> str1 = {"go", "bat", "me", "eat", "goal", "boy", "run"}; vector<char> str2 = {'e', 'o', 'b', 'a', 'm', 'g', 'l'}; findWord(str1, str2); return 0; } // This code is contributed by Samim Hossain Mondal.
Java
// Java code to implement the above approach class GFG{ // Function to print the words public static void printWord(String str, String s) { for (int i = 0; i < str.length(); i++) { if (s.indexOf(str.charAt(i)) < 0) { return; } } System.out.println(str); } // Function to find the words public static void findWord(String[] str1, char[] str2) { String s = ""; for (int i = 0; i < str2.length; i++) { s += str2[i]; } for (int i = 0; i < str1.length; i++) { printWord(str1[i], s); } } public static void main(String args[]) { String[] str1 = {"go", "bat", "me", "eat", "goal", "boy", "run"}; char[] str2 = {'e', 'o', 'b', 'a', 'm', 'g', 'l'}; findWord(str1, str2); } } // This code is contributed by Saurabh Jaiswal
Python3
# python code to implement the above approach # Function to print the words def printWord(str, s): for i in range(0, len(str)): if (not (str[i] in s)): return print(str) # Function to find the words def findWord(str1, str2): s = "" for i in str2: s += i for i in range(0, len(str1)): printWord(str1[i], s) # Driver Code if __name__ == "__main__": str1 = ["go", "bat", "me", "eat", "goal", "boy", "run"] str2 = ["e", "o", "b", "a", "m", "g", "l"] findWord(str1, str2) # This code is contributed by rakeshsahni
C#
// C# code to implement the above approach using System; class GFG { // Function to print the words public static void printWord(string str, string s) { for (int i = 0; i < str.Length; i++) { if (s.IndexOf((str[i])) < 0) { return; } } Console.WriteLine(str); } // Function to find the words public static void findWord(string[] str1, char[] str2) { string s = ""; for (int i = 0; i < str2.Length; i++) { s += str2[i]; } for (int i = 0; i < str1.Length; i++) { printWord(str1[i], s); } } public static void Main(string[] args) { string[] str1 = { "go", "bat", "me", "eat", "goal", "boy", "run" }; char[] str2 = { 'e', 'o', 'b', 'a', 'm', 'g', 'l' }; findWord(str1, str2); } } // This code is contributed by ukasp.
Javascript
<script> // JavaScript code to implement the above approach // Function to print the words function printWord(str, s) { for (var i = 0; i < str.length; i++) { if (s.indexOf(str[i]) < 0) { return; } } document.write(str); document.write("<br>"); } // Function to find the words function findWord(str1, str2) { var s = ""; for (var i in str2) { s += str2[i]; } for (var i = 0; i < str1.length; i++) { printWord(str1[i], s); } } var str1 = ["go", "bat", "me", "eat", "goal", "boy", "run"]; var str2 = ["e", "o", "b", "a", "m", "g", "l"]; findWord(str1, str2); </script>
Producción:
go me goal
Complejidad de tiempo: O(N * K) donde N es la longitud de dict[] yk es la longitud de arr[].
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por akshitsaxenaa09 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA