Write a Java program that counts duplicate characters from a given string.
Java program to count duplicate characters
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public final class Strings {
public static Map<Character, Integer> countDuplicateCharacters(String str) {
if (str == null || str.isBlank()) {
// or throw IllegalArgumentException
return Collections.emptyMap();
}
Map<Character, Integer> result = new HashMap<>();
// or use for(char ch: str.toCharArray()) { ... }
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
result.compute(ch, (k, v) -> (v == null) ? 1 : ++v);
}
return result;
}
}
Test Java program to count duplicate characters
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class Main {
private static final String TEXT = " Java is my fav programming language. I love Java coding";
public static void main(String[] args) {
System.out.println("HashMap based solution:");
long startTimeV1 = System.nanoTime();
Map<Character, Integer> duplicatesV1 = Strings.countDuplicateCharacters(TEXT);
displayExecutionTime(System.nanoTime()-startTimeV1);
System.out.println(Arrays.toString(duplicatesV1.entrySet().toArray()));
}
private static void displayExecutionTime(long time) {
System.out.println("Execution time: " + time + " ns" + " (" +
TimeUnit.MILLISECONDS.convert(time, TimeUnit.NANOSECONDS) + " ms)");
}
}
Output:
HashMap based solution: Execution time: 14567100 ns (14 ms) [ =10, a=8, c=1, d=1, e=2, f=1, g=5, I=1, i=3, J=2, l=2, m=3, .=1, n=3, o=3, p=1, r=2, s=1, u=1, v=4, y=1]
Comments
Post a Comment