Skip to content
Related Articles

Related Articles

Improve Article
Java program to print all duplicate characters in a string
  • Difficulty Level : Expert
  • Last Updated : 13 Jul, 2020

Given a string, the task is to write Java program to print all the duplicate characters with their frequency

Example: 

Input: str = “geeksforgeeks”
Output:
s : 2
e : 4
g : 2
k : 2

Input: str = “java”
Output:
a : 2

Approach: The idea is to do hashing using HashMap.



  • Create a hashMap of type {char, int}.
  • Traverse the string, check if the hashMap already contains the traversed character or not.
  • If it is present, then increment the count or else insert the character in the hashmap with frequency = 1.
  • Now traverse through the hashmap and look for the characters with frequency more than 1. Print these characters with their respective frequencies.

Below is the implementation of the above approach:

Java




// Java program for the above approach
import java.util.*;
class GFG {
  
    // Function to print all duplicate
    // characters in string using HashMap
    public static void
    countDuplicateCharacters(String str)
    {
  
        // Creating a HashMap containing char
        // as a key and occurrences as a value
        Map<Character, Integer> map
            = new HashMap<Character, Integer>();
  
        // Converting given string into
        // a char array
        char[] charArray = str.toCharArray();
  
        // Checking each character
        // of charArray
        for (char c : charArray) {
  
            if (map.containsKey(c)) {
  
                // If character is present
                // in map incrementing it's
                // count by 1
                map.put(c, map.get(c) + 1);
            }
            else {
  
                // If character is not present
                // in map putting this
                // character into map with
                // 1 as it's value.
                map.put(c, 1);
            }
        }
  
        // Traverse the HashMap, check
        // if the count of the character
        // is greater than 1 then print
        // the character and its frequency
        for (Map.Entry<Character, Integer> entry :
             map.entrySet()) {
  
            if (entry.getValue() > 1) {
                System.out.println(entry.getKey()
                                   + " : "
                                   + entry.getValue());
            }
        }
    }
  
    // Driver Code
    public static void
    main(String args[])
    {
        // Given String str
        String str = "geeksforgeeks";
  
        // Function Call
        countDuplicateCharacters(str);
    }
}
Output:
s : 2
e : 4
g : 2
k : 2

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer DSA Live Classes 




My Personal Notes arrow_drop_up
Recommended Articles
Page :