📅  最后修改于: 2023-12-03 15:25:46.671000             🧑  作者: Mango
本文将介绍一个简单的算法,用于打印输入字符串中的所有重复项。这对于字符串处理和数据清洗等应用场景非常有用。
我们可以使用哈希表来记录每个字符在输入字符串中出现的次数,然后遍历哈希表,打印出所有出现次数大于 1 的字符。
以下是具体的算法实现步骤:
定义一个 HashMap
,用于记录每个字符在字符串中出现的次数。
遍历输入字符串,对于每个字符:
a. 如果该字符不在哈希表中,则将其添加到哈希表中,并将其出现次数设置为 1。
b. 如果该字符已经在哈希表中,则将其出现次数加 1。
遍历哈希表,对于每个字符:
a. 如果该字符的出现次数大于 1,则打印出该字符。
以下是具体的 Java 代码实现:
public static void printDuplicates(String str) {
// Define a HashMap to count the occurrence of each character
Map<Character, Integer> map = new HashMap<>();
// Traverse the input string
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
// Update the count in the HashMap
if (map.containsKey(c)) {
int count = map.get(c);
map.put(c, count + 1);
} else {
map.put(c, 1);
}
}
// Print the duplicates
for (char c : map.keySet()) {
if (map.get(c) > 1) {
System.out.println(c);
}
}
}
以下是一个使用示例:
public static void main(String[] args) {
String str = "Hello, World!";
printDuplicates(str);
}
输出结果为:
l
o
本文介绍了一种简单的算法,用于打印输入字符串中的所有重复项。这个算法的时间复杂度为 O(n),其中 n 是字符串的长度。这个算法非常实用,可以应用到很多数据清洗和字符串处理的场景中。