如何移除字符串中所有重复单词(重复单词全部删除)
移除字符串中重复出现的所有单词解决方案
需求说明
移除字符串中所有重复出现的单词,即只要单词出现次数超过一次,就将该单词的所有实例全部删除。
示例输入:"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
相关产品推荐
相关产品推荐

