欢迎访问宙启技术站
智能推送

Java中如何编写一个函数来判断给定字符串是否包含重复的字符?

发布时间:2023-07-06 04:03:48

Java中判断给定字符串是否包含重复字符可以使用以下几种方法:

方法一:使用Set集合

我们可以使用Set集合来检查字符串中是否存在重复字符。Set集合不允许有重复元素,所以我们可以将字符串拆分为字符数组,然后将数组中的每个字符逐个添加到Set集合中。如果Set集合的大小和原字符串的长度一致,那么说明字符串中没有重复字符;否则,说明字符串中存在重复字符。

以下是使用Set集合判断字符串是否包含重复字符的函数代码:

public static boolean hasDuplicateChar(String str) {
    Set<Character> charSet = new HashSet<>();
    for (char c : str.toCharArray()) {
        if (!charSet.add(c)) {
            return true; // 发现重复字符,返回true
        }
    }
    return false; // 未发现重复字符,返回false
}

方法二:使用数组

我们可以使用一个长度为128的boolean数组来记录字符串中每个字符的出现情况。数组的索引对应字符的ASCII码,值为true表示该字符已经出现过,值为false表示该字符还未出现。遍历字符串时,如果对应位置的值已经是true,则说明该字符已经出现过;如果对应位置的值是false,则将其更新为true。如果在遍历过程中发现某个字符已经被标记为true,则说明字符串中包含重复字符。

以下是使用数组判断字符串是否包含重复字符的函数代码:

public static boolean hasDuplicateChar(String str) {
    boolean[] charSet = new boolean[128];
    for (char c : str.toCharArray()) {
        if (charSet[c]) {
            return true; // 发现重复字符,返回true
        }
        charSet[c] = true;
    }
    return false; // 未发现重复字符,返回false
}

方法三:暴力比较

我们也可以使用两层循环来暴力比较字符串中的字符是否有重复。外层循环遍历每个字符,内层循环从外层循环的下一个位置开始遍历后续的字符,如果发现重复字符,则返回true。

以下是使用暴力比较判断字符串是否包含重复字符的函数代码:

public static boolean hasDuplicateChar(String str) {
    char[] charArray = str.toCharArray();
    int len = charArray.length;
    for (int i = 0; i < len - 1; i++) {
        for (int j = i + 1; j < len; j++) {
            if (charArray[i] == charArray[j]) {
                return true; // 发现重复字符,返回true
            }
        }
    }
    return false; // 未发现重复字符,返回false
}

以上是三种常用的方法来判断给定字符串是否包含重复字符。根据实际情况选择不同的方法来编写代码,以提高代码的效率和性能。