Dadas dos strings S1 y S2 , que representan oraciones, la tarea es imprimir ambas oraciones después de eliminar todas las palabras que están presentes en ambas oraciones.
Entrada: S1 = «el cielo es de color azul», S2 = «A Raj le gusta el color azul cielo»
Salida: está en
Raj le gusta
Explicación: Las palabras comunes son [cielo, azul, color]. Quitar estas palabras de las dos oraciones modifica las oraciones al resultado especificado.Entrada: S1 = « aprender estructuras de datos y algoritmos en GeeksforGeeks «, S2 = « GeeksforGeeks es el portal de informática para Geeks »
Salida: aprender estructuras de datos y algoritmos en
es el portal de informática para.
Enfoque usando Hashing : el problema se puede resolver usando la función Counter() . Siga los pasos a continuación para resolver el problema:
- Como todas las palabras en una oración están separadas por espacios, divida las palabras por espacios usando split() y guárdelas en una Lista .
- Inicialice dos listas, digamos oración1 y oración2 , para almacenar las palabras de las dos oraciones dadas.
- Cuente las frecuencias de las palabras de ambas oraciones usando la función Counter() y guárdelas en los diccionarios frecuencia1 y frecuencia2 .
- Recorra la oración de la lista1 y elimine las palabras que están presentes en la frecuencia del diccionario2 .
- Recorra la oración de la lista2 y elimine las palabras que están presentes en la frecuencia1 del diccionario .
- Imprime ambas listas.
A continuación se muestra la implementación del enfoque anterior:
Python3
# Python program for the above approach from collections import Counter # Function to remove common # words from two strings def removeCommonWords(sent1, sent2): # Store the words present # in both the sentences sentence1 = list(sent1.split()) sentence2 = list(sent2.split()) # Calculate frequency of words # using Counter() function frequency1 = Counter(sentence1) frequency2 = Counter(sentence2) word = 0 # Iterate the list consisting # of words in the first sentence for i in range(len(sentence1)): # If word is present # in both the strings if sentence1[word] in frequency2.keys(): # Remove the word sentence1.pop(word) # Decrease the frequency of the word word = word-1 word += 1 word = 0 # Iterate the list consisting of # words in the second sentence for i in range(len(sentence2)): # If word is present # in both the strings if sentence2[word] in frequency1.keys(): # Remove the word sentence2.pop(word) # Decrease the removed word word = word-1 word += 1 # Print the remaining # words in the two sentences print(*sentence1) print(*sentence2) # Driver Code sentence1 = "sky is blue in color" sentence2 = "raj likes sky blue color" removeCommonWords(sentence1, sentence2)
is in raj likes
Complejidad de tiempo: O((max(N, M)) 2 )
Espacio auxiliar: O(max(N, M))
Enfoque usando conjuntos y listas : siga los pasos a continuación para resolver el problema:
- Como todas las palabras en una oración están separadas por espacios, divida las palabras por espacios usando split() y guárdelas en una Lista .
- Inicialice dos listas, digamos oración1 y oración2 , para almacenar las palabras de las dos oraciones dadas.
- Convierta las dos listas en conjuntos, digamos sen1 y sen2 .
- Ahora, encuentre la intersección del conjunto de dos conjuntos , para almacenar palabras que son comunes en ambas oraciones, digamos común .
- Atraviese la oración List1 y extraiga todas las palabras que están presentes en la intersección establecida de dos oraciones.
- Repita lo mismo para la segunda oración.
- Finalmente, imprime las palabras restantes en las dos Listas .
A continuación se muestra la implementación del enfoque anterior:
Python3
# Python program to implement # the above approach # Function to return the words which # are common in both the sentences def commonWords(sent1, sent2): # Splitting the words in a set sen1 = set(sent1) sen2 = set(sent2) # Stores the list of common words common = list(sen1.intersection(sen2)) # Return the list return common # Function to remove all the words # that are common in both the strings def removeCommonWords(sent1, sent2): # Stores the words of the # sentences in separate lists sentence1 = list(sent1.split()) sentence2 = list(sent2.split()) # Find the words that are # common in both the sentences commonlist = commonWords(sentence1, sentence2) word = 0 # Iterate the list of words # of the first sentence for i in range(len(sentence1)): # If word is common in both lists if sentence1[word] in commonlist: # Remove the word sentence1.pop(word) # Decrease the removed word word = word - 1 word += 1 word = 0 # Iterate the list of words # of the second sentence for i in range(len(sentence2)): # If word is common in both lists if sentence2[word] in commonlist: # Remove the word sentence2.pop(word) # Decrease the removed word word = word-1 word += 1 # Print the remaining words # in both the sentences print(*sentence1) print(*sentence2) # Driver Code S1 = "sky is blue in color" S2 = "Raj likes sky blue color" removeCommonWords(S1, S2)
is in Raj likes
Complejidad de tiempo: O(max(N, M))
Espacio auxiliar: O(max(N, M))
Publicación traducida automáticamente
Artículo escrito por vikkycirus y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA