在Java中如何使用函数实现字符串去重的功能
发布时间:2023-06-11 05:33:16
字符串去重指的是将一个字符串中的重复字符去掉,只留下一个。在Java中可以使用函数实现字符串去重的功能。具体的实现方法有多种,下面就介绍两种常见的实现方式。
第一种实现方式:
使用Set集合去重。将字符串中的每个字符遍历,加入到一个Set集合中。因为Set集合会自动去重,所以最后只需要将Set集合中的字符再拼接成字符串即可。
代码实现如下:
public static String removeDuplicateChars(String str) {
Set<Character> charSet = new LinkedHashSet<>();
for (int i = 0; i < str.length(); i++) {
charSet.add(str.charAt(i));
}
StringBuilder sb = new StringBuilder();
for (Character c : charSet) {
sb.append(c);
}
return sb.toString();
}
第二种实现方式:
使用数组去重。首先需要定义一个长度为256的字符数组。然后遍历字符串中的每个字符,将其转换为ASCII码,然后在字符数组中使用该ASCII码作为下标进行标记。最后再遍历字符数组,将标记为1的字符拼接成字符串。
代码实现如下:
public static String removeDuplicateChars(String str) {
int len = str.length();
boolean[] used = new boolean[256];
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++) {
char ch = str.charAt(i);
int ascii = (int) ch;
if (!used[ascii]) {
sb.append(ch);
used[ascii] = true;
}
}
return sb.toString();
}
两种实现方式各有优缺点,使用哪种方式取决于具体的场景和要求。第一种方式的效率相对较低,需要使用Set集合;第二种方式使用了数组,效率较高,但是对于非ASCII字符无法处理。一般来说,如果字符串中包含的字符集较小,可以考虑使用数组;如果字符集较大或者不确定,则建议使用Set集合方式。
