Open In App

Java program to print all duplicate characters in a string

Last Updated : 07 Aug, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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(NlogN) 

Auxiliary Space: O(N) since using Map



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads