stringbuilder去重
时间: 2025-05-27 18:18:43 浏览: 16
### 使用 `StringBuilder` 实现字符串去重的方法
在 Java 中,可以利用 `StringBuilder` 的特性以及字符串索引方法来实现字符串去重的功能。以下是具体实现方式:
通过遍历输入字符串中的每个字符,并借助 `String.indexOf()` 方法判断当前字符是否为首次出现。如果是,则将其追加到 `StringBuilder` 对象中;如果不是,则跳过该字符。最终调用 `toString()` 将 `StringBuilder` 转换回字符串形式。
以下是一个完整的代码示例[^2]:
```java
public class StringDeduplication {
public static String removeDuplicates(String str) {
if (str == null) return null; // 处理空字符串的情况
StringBuilder builder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char currentChar = str.charAt(i);
if (str.indexOf(currentChar) == i) { // 判断是否为首次出现
builder.append(currentChar); // 如果是首次出现则添加到结果中
}
}
return builder.toString(); // 返回去重后的字符串
}
public static void main(String[] args) {
String input = "hello";
System.out.println(removeDuplicates(input)); // 输出: helo
}
}
```
此代码的核心逻辑在于使用 `indexOf()` 来检测某个字符是否已经存在于之前的子串中。如果其位置等于当前循环的索引值,则说明这是该字符第一次出现,因此应被保留下来。
另外一种思路也可以基于 `lastIndexOf()` 和 `indexOf()` 结合的方式来进行更复杂的条件筛选[^3]。例如,在某些场景下可能还需要考虑去除连续重复项或者仅保留单次出现的内容等情况。
需要注意的是,虽然这里展示了如何去掉所有重复字母只留下它们的第一个实例,但在实际应用过程中还可能存在其他需求比如保持原有顺序的同时做进一步处理等特殊要求。
#### 注意事项
- 上述方法的时间复杂度主要取决于内部使用的 `indexOf()` 函数,通常情况下它的效率较高但对于非常庞大的数据集可能会有所影响。
- 此外还可以探索更多高级的数据结构如 HashSet 来辅助完成类似任务以提高执行速度但是这会增加额外的空间消耗。
阅读全文
相关推荐

















