Open In App

Java Program to Find Duplicate Words in a Regular Expression

Improve
Improve
Like Article
Like
Save
Share
Report

Given an Expression which is represented by String. The task is to find duplicate elements in a Regular Expression in Java. Use a map or set data structures for identifying the uniqueness of words in a sentence.

Examples:

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.

Approach 1:

  1. Get the Expression.
  2. Store all Words in an Array.
  3. Splitting word using regex ‘\\W’. (use of regex)
  4. Iterating in the array and storing words and all the number of occurrences in the Map.
  5. Now, In the Map, If the number of occurrences is more than 1 then we are printing the word.

Below is the implementation of the above approach:

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);
        }
    }
}


Output

I
am

Approach 2:

  1. Get the Expression.
  2. Store all Words in an Array.
  3. Splitting word using regex ‘\\W’. (use of regex)
  4. Matching every word of the array with other words through iteration.
  5. If words matched then adding words in a Set because set removes the repeated words added by the flow of iteration.
  6. Finally, we are printing the set.

Below is the implementation of the above approach:

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);
    }
}


Output

[I, am]


Last Updated : 20 Nov, 2020
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads