Java program to print all duplicate characters in a string

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


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

Input: str = “java”
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 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) {
                                   + " : "
                                   + entry.getValue());
    // Driver Code
    public static void
    main(String args[])
        // Given String str
        String str = "geeksforgeeks";
        // Function Call



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.

My Personal Notes arrow_drop_up

If you like GeeksforGeeks and would like to contribute, you can also write an article using or mail your article to See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.