Java program to remove duplicate characters from a string

2025 年 5 月 2 日 | 阅读 6 分钟

很多时候我们需要在 Java 中移除字符串中的重复字符。我们可以通过使用简单的 for 循环、排序、哈希和 IndexOf() 方法来移除字符串中的 重复字符。因此,移除重复字符的方法可能不止一种。

  1. 使用简单的 for 循环。
  2. 使用排序算法。
  3. 使用哈希。
  4. 使用 indexOf() 方法。
Java program to remove duplicate characters from a string

让我们来理解一下从字符串中移除重复字符的每种方法。

1) 使用 for 循环

这是移除字符串中重复字符最简单的方法。我们需要遵循以下步骤来移除重复字符:

  1. 第一步,我们需要将字符串转换为字符数组。
  2. 计算数组的大小。
  3. 通过传递字符数组和长度来调用 removeDuplicates() 方法。
  4. 遍历字符数组中的所有字符。
  5. 检查 str[i] 是否之前存在。如果之前不存在,则将其添加到结果中。

让我们来实现上述理论代码,以了解此方法如何移除字符串中的重复字符。

RemoveDuplicatesExample1.java

输出

Java program to remove duplicate characters from a string

2) 使用排序

移除重复字符的另一种方法是使用排序算法。它比第一种方法更快。为了移除字符串中的重复字符,我们需要遵循以下步骤:

  1. 首先,我们需要对元素进行排序。
  2. 之后,我们在循环中通过将当前字符与前一个字符进行比较来移除重复字符。
  3. 最后,我们需要移除结果字符串末尾的额外字符。

该方法不保留输入字符串的原始顺序。移除重复字符后,顺序可能会与原始顺序不同。

让我们在 Java 程序中实现上述步骤。

RemoveDuplicatesExample2.java

输出

Java program to remove duplicate characters from a string

3) 使用哈希

从字符串中移除重复字符的另一种方法是哈希。通过使用哈希,我们可以轻松做到这一点。我们将使用以下步骤通过哈希移除重复字符:

  1. 在 main() 方法中,我们将创建一个需要移除重复字符的字符串。
  2. 我们将调用 removeDuplicates() 方法,并将需要移除重复字符的字符串作为参数传递。
  3. 在 removeDuplicates() 方法中,我们将创建一个字符类型的 LinkedHashSet。LinkedHashSet 包含唯一的元素。因此,如果我们向 LinkedHashSet 中添加字符串的每个字符,所有重复的字符都会被移除。
  4. 最后,我们打印 LinkedHashSet 的所有字符。

注意:它会保留字符串中字符的插入顺序。

让我们来实现上述理论代码,以了解哈希是如何实际用于移除字符串中的重复字符的。

RemoveDuplicatesExample3.java

输出

Java program to remove duplicate characters from a string

4) 使用 indexOf() 方法

移除字符串中重复字符的最后一种方法是使用 indexOf() 方法。在此方法中,我们将处理字符的索引位置。为了移除字符串中的重复字符,我们将使用以下步骤:

  • 在 main() 方法中,我们将创建一个需要移除重复字符的字符串。
  • 我们将调用 removeDuplicates() 方法,并将需要移除重复字符的字符串作为参数传递。
  • removeDuplicates() 方法中,我们将创建一个新的空字符串并计算原始字符串的长度。
  • 我们将使用循环遍历字符串,并使用 indexOf() 方法检查重复的字符。
  • 当元素不存在时,indexOf() 方法返回 -1。因此,当字符串不包含该字符时,我们将将其添加到空字符串中。

注意:它会保留字符在字符串中添加时的插入顺序。

让我们在 Java 程序中实现上述步骤。

RemoveDuplicatesExample4.java

输出

Java program to remove duplicate characters from a string

以上讨论的所有方法都用于移除字符串中的重复字符。所有方法都易于理解,我们可以使用其中任何一种来移除重复字符。