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