Java 去重复字符303


在编写 Java 代码时,经常需要从字符串中删除重复的字符。有几种方法可以实现此目的,本文将探讨其中一些最有效和最常用的方法。

1. 使用 HashSet

一种简单而有效的方法是使用 HashSet。HashSet 是一个不包含重复元素的集合。因此,我们可以遍历字符串,将每个字符添加到 HashSet 中。由于 HashSet 不允许重复元素,因此它将过滤掉重复的字符。最后,我们可以从 HashSet 中构建一个新字符串,它将只包含唯一的字符。
import ;
import ;
public class RemoveDuplicates {
public static String removeDuplicates(String str) {
Set set = new HashSet();
StringBuilder sb = new StringBuilder();
for (char c : ()) {
if (!(c)) {
(c);
(c);
}
}
return ();
}
public static void main(String[] args) {
String str = "programming";
(removeDuplicates(str)); // prints: programi
}
}

2. 使用 LinkedHashSet

另一种方法是使用 LinkedHashSet。与 HashSet 类似,LinkedHashSet 也是一种不包含重复元素的集合。然而,与 HashSet 不同的是,LinkedHashSet 保留元素的插入顺序。这在需要保留原始字符串中字符顺序的情况下很有用。
import ;
import ;
public class RemoveDuplicates {
public static String removeDuplicates(String str) {
Set set = new LinkedHashSet();
StringBuilder sb = new StringBuilder();
for (char c : ()) {
if (!(c)) {
(c);
}
}
for (Character c : set) {
(c);
}
return ();
}
public static void main(String[] args) {
String str = "programming";
(removeDuplicates(str)); // prints: programi
}
}

3. 使用双指针法

双指针法是一种使用两个指针在字符串中遍历并删除重复字符的有效方法。第一个指针(称为“慢指针”)跟踪结果字符串的末尾,而第二个指针(称为“快指针”)遍历原始字符串。每当快指针遇到一个与慢指针指向的字符不同的字符时,它将该字符移动到慢指针指向的位置,并向慢指针前进一步。此过程一直持续到快指针到达字符串末尾,这时结果字符串将只包含唯一的字符。
public class RemoveDuplicates {
public static String removeDuplicates(String str) {
char[] chars = ();
int slow = 0;
for (int fast = 1; fast < ; fast++) {
if (chars[fast] != chars[slow]) {
chars[++slow] = chars[fast];
}
}
return new String(chars, 0, slow + 1);
}
public static void main(String[] args) {
String str = "programming";
(removeDuplicates(str)); // prints: programi
}
}

4. 使用正则表达式

正则表达式可以用来匹配重复的字符。我们可以使用以下正则表达式匹配并替换重复的字符:
String str = "programming";
String result = ("(.+?)(\\1+)", "$1");
(result); // prints: programi

5. 使用 StringBuilder

StringBuilder 类提供了 appendUnique() 方法,该方法可以将一个字符追加到 StringBuilder 中,同时检查重复项。如果字符不存在,则将其追加,否则跳过。此方法可用于遍历字符串并删除重复字符。
import ;
public class RemoveDuplicates {
public static String removeDuplicates(String str) {
StringBuilder sb = new StringBuilder();
for (char c : ()) {
if (((c)) < 0) {
(c);
}
}
return ();
}
public static void main(String[] args) {
String str = "programming";
(removeDuplicates(str)); // prints: programi
}
}


本文介绍了 Java 中用于从字符串中删除重复字符的五种有效方法。每种方法都有其优缺点,具体使用哪种方法取决于特定需求。根据输入字符串的长度和重复项的数量,某些方法可能比其他方法更有效。

2024-11-19


上一篇:使用 Java 通过 UDP 发送数据

下一篇:Java 代码实现机票预订系统