📜  检查字符串流中的重复项(1)

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

检查字符串流中的重复项

在编程过程中,经常需要检查一个字符串是否包含重复项。本文将介绍几种常见的方法来检查字符串流中的重复项。

方法一:使用 Set

使用 Set 可以很方便地去除重复项,我们可以将字符串流转化为字符数组,然后使用 Set 对其进行去重,最后比较字符数组长度和 Set 长度是否相等即可。

public static boolean isDuplicateUsingSet(String str) {
    char[] charArray = str.toCharArray();
    Set<Character> charSet = new HashSet<>();

    for (char c : charArray) {
        charSet.add(c);
    }

    return charArray.length != charSet.size();
}
方法二:使用 Map

另一种常见的方法是使用 Map 来记录每个字符出现的次数,如果有出现次数大于 1 的字符,则说明字符串流包含重复项。

public static boolean isDuplicateUsingMap(String str) {
    char[] charArray = str.toCharArray();
    Map<Character, Integer> charMap = new HashMap<>();

    for (char c : charArray) {
        int count = charMap.getOrDefault(c, 0);
        charMap.put(c, count + 1);
    }

    for (char c : charArray) {
        if (charMap.get(c) > 1) {
            return true;
        }
    }

    return false;
}
方法三:使用数组

我们可以使用一个数组记录每个字符的出现次数,如果有出现次数大于 1 的字符,则说明字符串流包含重复项。

public static boolean isDuplicateUsingArray(String str) {
    int[] charArray = new int[256];

    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        charArray[c]++;
        if (charArray[c] > 1) {
            return true;
        }
    }

    return false;
}
总结

以上是检查字符串流中重复项的几种常用方法。使用 Set 可以方便地去重,Map 可以记录每个字符出现的次数,数组则可以进行统计。需要根据实际需求选择合适的方法。