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

在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集合方式。