Solution: Here is a solution to find duplicate characters in String.
- Create a HashMap and the character of String will be inserted as key and its count as value.
- If HashMap already contains char, increase its count by 1, else put char in HashMap.
- If the value of Char is more than 1, that means it is a duplicate character in that String.
Java Program to find duplicate Characters in a String:
import java.util.HashMap; import java.util.Map; import java.util.Set; public class DuplicateCharFinder { public void findIt(String str) { Map<Character, Integer> baseMap = new HashMap<Character, Integer>(); char[] charArray = str.toCharArray(); for (Character ch : charArray) { if (baseMap.containsKey(ch)) { baseMap.put(ch, baseMap.get(ch) + 1); } else { baseMap.put(ch, 1); } } Set<Character> keys = baseMap.keySet(); for (Character ch : keys) { if (baseMap.get(ch) > 1) { System.out.println(ch + " is " + baseMap.get(ch) + " times"); } } } public static void main(String a[]) { DuplicateCharFinder dcf = new DuplicateCharFinder(); dcf.findIt("India is my country"); } }
Python code
def find_duplicates(s: str): freq = {} for ch in s: freq[ch] = freq.get(ch, 0) + 1 for ch, count in freq.items(): if count > 1: print(f"{ch} -> {count}") if __name__ == "__main__": find_duplicates("cloudtechtwitter")
📌 Final Comparison
Approach Time Complexity Space Complexity Best Use Frequency Map (HashMap / Dictionary) O(n) O(k) ⭐ Best & general solution Sorting characters O(n log n) O(n) Simple but slower indexOf & lastIndexOf O(n²) O(1) ❌ Avoid for large input ASCII frequency array O(n) O(1) Fastest for ASCII only