内容纲要
需求描述
Write a Java Program to find the duplicate characters in a string.
解决方案
在下面的示例中,我们将使用HashMap来查找字符串中的重复字符。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Main {
public static void main(String[] args) {
String str = "Programming";
char[] chars = str.toCharArray();
Map<Character, Integer> charMap = new HashMap<>();
for (char c : chars) {
if (charMap.containsKey(c)) {
charMap.put(c, charMap.get(c) + 1);
} else {
charMap.put(c, 1);
}
}
Set<Map.Entry<Character, Integer>> entrySet = charMap.entrySet();
System.out.printf("List of duplicate characters in String '%s' %n", str);
for (Map.Entry<Character, Integer> entry : entrySet) {
if (entry.getValue() > 1) {
System.out.printf("%s : %d %n", entry.getKey(), entry.getValue());
}
}
}
}
解释:
在这段代码中,我们首先创建了一个名为 charMap 的 HashMap。然后,我们将输入的字符串转换为字符数组,然后遍历这个数组。对于每一个字符,我们检查 charMap 中是否已经存在这个字符。如果存在,那么我们将这个字符的计数加一。如果不存在,那么我们将这个字符添加到 charMap 中,并将其计数设为1。
接着,我们获取 charMap 的 entrySet,然后遍历它。对于每一个 entry,我们检查其值是否大于1。如果大于1,那么就表示这个字符是重复的,我们就打印出这个字符及其重复的次数。
时间复杂度:这个算法的时间复杂度为 O(n),其中 n 是输入字符串的长度。
空间复杂度:这个算法的空间复杂度为 O(n),因为我们需要创建一个 HashMap 来存储字符及其出现的次数。