Java Program to Find Duplicate Words in a Regular Expression

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:
- Get the Expression.
- Store all Words in an Array.
- Splitting word using regex ‘\\W’. (use of regex)
- Iterating in the array and storing words and all the number of occurrences in the Map.
- 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 Javaimport 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:
- Get the Expression.
- Store all Words in an Array.
- Splitting word using regex ‘\\W’. (use of regex)
- Matching every word of the array with other words through iteration.
- If words matched then adding words in a Set because set removes the repeated words added by the flow of iteration.
- Finally, we are printing the set.
Below is the implementation of the above approach:
Java
// Find Duplicate Words in a Regular Expression in Javaimport 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]



