Imprima todas las palabras válidas del diccionario dado que son posibles usando Caracteres de la array dada

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *