leetcode 884
给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)
如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。
返回所有不常用单词的列表。
您可以按任何顺序返回列表。
示例 1:
输入:A = “this apple is sweet”, B = “this apple is sour”
输出:[“sweet”,“sour”]
思路
- 统计所有单词出现的次数,如果只出现了一次,就放在返回的数组中
代码
public String[] uncommonFromSentences(String A, String B) {
//先根据分好空格分开
String[] a = A.split(" ");
String[] b = B.split(" ");
//然后存入map中,key=单词,value=出现的次数
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < a.length; i++) {
map.put(a[i],map.getOrDefault(a[i],0)+1);
}
for (int i = 0; i < b.length; i++) {
map.put(b[i],map.getOrDefault(b[i],0)+1);
}
ArrayList<String> list = new ArrayList<>();
//然后遍历所有的key,对比value=1的,放入list中
for (String word:
map.keySet()) {
if (map.get(word)==1){
list.add(word);
}
}
//list转化为字符串数组
return list.toArray(new String[list.size()]) ;
}