Dada una string str que representa una oración, la tarea es eliminar las palabras duplicadas de las oraciones usando expresiones regulares en Java.
Ejemplos:
Entrada: str = “Adiós mundo mundo”
Salida: Adiós mundo
Explicación:
Eliminamos la segunda ocurrencia de adiós y mundo de Adiós mundo mundo
Entrada: str = “Ram fue a su casa”
Salida: Ram fue a su casa
Explicación:
Eliminamos la segunda aparición de fue y la segunda y tercera aparición de a de Ram fue fue a a su casa.
Entrada: str = “Hola hola mundo mundo”
Salida: Hola mundo
Explicación:
Eliminamos la segunda ocurrencia de hola y mundode Hola hola mundo mundo.
Acercarse
- Obtenga la sentencia.
- Forme una expresión regular para eliminar palabras duplicadas de oraciones.
regex = "\\b(\\w+)(?:\\W+\\1\\b)+";
- Los detalles de la expresión regular anterior se pueden entender como:
- “\\b” : Un límite de palabras. Los límites son necesarios para casos especiales. Por ejemplo, en «Mi tesis es excelente», «es» no coincidirá dos veces.
- “\\w+” Un carácter de palabra: [a-zA-Z_0-9]
- “\\W+” : Un carácter que no es una palabra: [^\w]
- “\\1” : Coincide con lo que haya coincidido en el primer grupo de paréntesis, que en este caso es (\w+)
- “+” : Coincide con lo que sea que se coloque después de 1 o más veces
- Haga coincidir la oración con Regex. En Java, esto se puede hacer usando Pattern.matcher().
- devolver la oración modificada.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to remove duplicate words // using Regular Expression or ReGex. #include <iostream> #include <regex> using namespace std; // Function to validate the sentence // and remove the duplicate words string removeDuplicateWords(string s) { // Regex to matching repeated words. const regex pattern("\\b(\\w+)(?:\\W+\\1\\b)+", regex_constants::icase); string answer = s; for (auto it = sregex_iterator(s.begin(), s.end(), pattern); it != sregex_iterator(); it++) { // flag type for determining the matching behavior // here it is for matches on 'string' objects smatch match; match = *it; answer.replace(answer.find(match.str(0)), match.str(0).length(), match.str(1)); } return answer; } // Driver Code int main() { // Test Case: 1 string str1 = "Good bye bye world world"; cout << removeDuplicateWords(str1) << endl; // Test Case: 2 string str2 = "Ram went went to to his home"; cout << removeDuplicateWords(str2) << endl; // Test Case: 3 string str3 = "Hello hello world world"; cout << removeDuplicateWords(str3) << endl; return 0; } // This code is contributed by yuvraj_chandra
Java
// Java program to remove duplicate words // using Regular Expression or ReGex. import java.util.regex.Matcher; import java.util.regex.Pattern; class GFG { // Function to validate the sentence // and remove the duplicate words public static String removeDuplicateWords(String input) { // Regex to matching repeated words. String regex = "\\b(\\w+)(?:\\W+\\1\\b)+"; Pattern p = Pattern.compile( regex, Pattern.CASE_INSENSITIVE); // Pattern class contains matcher() method // to find matching between given sentence // and regular expression. Matcher m = p.matcher(input); // Check for subsequences of input // that match the compiled pattern while (m.find()) { input = input.replaceAll( m.group(), m.group(1)); } return input; } // Driver code public static void main(String args[]) { // Test Case: 1 String str1 = "Good bye bye world world"; System.out.println( removeDuplicateWords(str1)); // Test Case: 2 String str2 = "Ram went went to to his home"; System.out.println( removeDuplicateWords(str2)); // Test Case: 3 String str3 = "Hello hello world world"; System.out.println( removeDuplicateWords(str3)); } }
Python3
# Python program to remove duplicate words # using Regular Expression or ReGex. import re # Function to validate the sentence # and remove the duplicate words def removeDuplicateWords(input): # Regex to matching repeated words regex = r'\b(\w+)(?:\W+\1\b)+' return re.sub(regex, r'\1', input, flags=re.IGNORECASE) # Driver Code # Test Case: 1 str1 = "Good bye bye world world" print(removeDuplicateWords(str1)) # Test Case: 2 str2 = "Ram went went to to his home" print(removeDuplicateWords(str2)) # Test Case: 3 str3 = "Hello hello world world" print(removeDuplicateWords(str3)) # This code is contributed by yuvraj_chandra
Good bye world Ram went to his home Hello world
Publicación traducida automáticamente
Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA