You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除字符串中所有重复单词(重复单词全部删除)

移除字符串中重复出现的所有单词解决方案

需求说明

移除字符串中所有重复出现的单词,即只要单词出现次数超过一次,就将该单词的所有实例全部删除。
示例输入:"Hello hi hi stackoverflow remain only Hello "
示例输出:"stackoverflow remain only"

你的尝试代码(未完成版本)

public static void main(String[] args) throws Exception {
 String name = "Hello hi stackoverflow remain only Hello hi";
 String ar[] = name.split("\\s");
 ArrayList<String> dup = new ArrayList<String>();//duplicate words
 ArrayList<String> res = new ArrayList<String>();
 for (int i = 0; i < ar.length; i++) {
 res.add(ar[i]);
 String del = ar[i];
 for (int j =...
}

完整解决方案代码

你的思路方向没问题,不过我们可以用更高效的统计方式来实现,避免嵌套循环的冗余。这里给你优化后的完整代码:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class RemoveDuplicateWords {
    public static void main(String[] args) {
        String input = "Hello hi hi stackoverflow remain only Hello ";
        // 分割字符串为单词数组,用\\s+处理连续空格,trim()去除首尾空格避免空元素
        String[] words = input.trim().split("\\s+");
        
        // 统计每个单词的出现次数
        Map<String, Integer> wordCount = new HashMap<>();
        for (String word : words) {
            wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
        }
        
        // 收集仅出现一次的单词
        ArrayList<String> resultList = new ArrayList<>();
        for (String word : words) {
            if (wordCount.get(word) == 1) {
                resultList.add(word);
            }
        }
        
        // 拼接成最终结果字符串
        String result = String.join(" ", resultList);
        System.out.println(result); // 输出:stackoverflow remain only
    }
}

代码思路解释

  • 用HashMap统计单词出现次数,时间复杂度O(n),比嵌套循环更高效
  • 遍历原单词数组,只保留统计次数为1的单词,确保重复单词被全部排除
  • 用String.join()拼接结果,比手动循环拼接字符串更简洁优雅

内容的提问来源于stack exchange,提问作者Tavash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:48:51