📜  打印输入字符串中的所有重复项(1)

📅  最后修改于: 2023-12-03 15:25:46.671000             🧑  作者: Mango

打印输入字符串中的所有重复项

本文将介绍一个简单的算法,用于打印输入字符串中的所有重复项。这对于字符串处理和数据清洗等应用场景非常有用。

算法思路

我们可以使用哈希表来记录每个字符在输入字符串中出现的次数,然后遍历哈希表,打印出所有出现次数大于 1 的字符。

以下是具体的算法实现步骤:

  1. 定义一个 HashMap,用于记录每个字符在字符串中出现的次数。

  2. 遍历输入字符串,对于每个字符:

    a. 如果该字符不在哈希表中,则将其添加到哈希表中,并将其出现次数设置为 1。

    b. 如果该字符已经在哈希表中,则将其出现次数加 1。

  3. 遍历哈希表,对于每个字符:

    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 是字符串的长度。这个算法非常实用,可以应用到很多数据清洗和字符串处理的场景中。