Programa Java para encontrar palabras duplicadas en una expresión regular

Dada una expresión que está representada por String. La tarea es encontrar elementos duplicados en una expresión regular en Java. Use un mapa o establezca estructuras de datos para identificar la singularidad de las palabras en una oración.

Ejemplos:

Input : str = " Hi, I am Hritik and I am a programmer. "
Output: I am
Explanation: We are printing duplicate words in the given Expression.

Input : str = " Ironman is alive. "
Output: There is no Duplicate Word.
Explanation: There are no duplicate words present in the given Expression.

Enfoque 1:

  1. Obtenga la expresión.
  2. Almacene todas las palabras en una array.
  3. Dividir palabra usando regex ‘\\W’. ( uso de expresiones regulares )
  4. Iterando en la array y almacenando palabras y todo el número de ocurrencias en el Mapa.
  5. Ahora, en el mapa, si el número de ocurrencias es más de 1, estamos imprimiendo la palabra.

A continuación se muestra la implementación del enfoque anterior:

Java

// Find Duplicate Words in a Regular Expression in Java
import java.util.*;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // we have a expression
        String expression
            = "Hi, I am Hritik and I am a programmer";
  
        // splitting words using regex
        String[] words = expression.split("\\W");
  
        // we are creating a Map for storing
        // strings and it's occurrence"
        Map<String, Integer> word_map = new HashMap<>();
  
        // Here we are iterating in words array and
        // increasing it's occurrence by 1.
        for (String word : words) {
  
            if (word_map.get(word) != null) {
                word_map.put(word, word_map.get(word) + 1);
            }
  
            // if the word came once then occurrence is 1.
            else {
                word_map.put(word, 1);
            }
        }
  
        // creating a keyset of word_map
        Set<String> word_set = word_map.keySet();
  
        // We are iterating in word set
        for (String word : word_set) {
  
            // if word matched then checking occurrence
            if (word_map.get(word) > 1)
  
                // here we are printing the duplicate words
                System.out.println(word);
        }
    }
}
Producción

I
am

Enfoque 2:

  1. Obtenga la expresión.
  2. Almacene todas las palabras en una array.
  3. Dividir palabra usando regex ‘\\W’. ( uso de expresiones regulares )
  4. Hacer coincidir cada palabra de la array con otras palabras a través de la iteración.
  5. Si las palabras coinciden, se agregan palabras en un conjunto porque el conjunto elimina las palabras repetidas agregadas por el flujo de iteración.
  6. Finalmente, estamos imprimiendo el conjunto.

A continuación se muestra la implementación del enfoque anterior:

Java

// Find Duplicate Words in a Regular Expression in Java
import java.util.*;
  
public class Main {
  
    public static void main(String[] args)
    {
        String expression
            = "Hi, I am Hritik and I am a programmer";
  
        // splitting words using regex
        String[] words = expression.split("\\W");
  
        // creating object of HashSet class implemented by
        Set<String> set = new HashSet<>();
  
        // here we are iterating in Array
        for (int i = 0; i < words.length - 1; i++) {
  
            for (int j = 1; j < words.length; j++) {
  
                // if strings matched then adding strings in
                // Set because if we ad same string set will
                // remove one and we have only repeated
                // words.
                if (words[i].equals(words[j]) && i != j) {
                    set.add(words[i]);
                }
            }
        }
  
        // here we are printing the set
        System.out.println(set);
    }
}
Producción

[I, am]

Publicación traducida automáticamente

Artículo escrito por depresseddeadpool 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 *