Programa de Python para eliminar palabras que son comunes en dos strings

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)
Producción:

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)
Producción:

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

Deja una respuesta

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