884. 两句话中的不常见单词
给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)
如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。
返回所有不常用单词的列表。
您可以按任何顺序返回列表。
示例 1:
输入:A = “this apple is sweet”, B = “this apple is sour”
输出:[“sweet”,“sour”]
示例 2:
输入:A = “apple apple”, B = “banana”
输出:[“banana”]
提示:
0 <= A.length <= 200
0 <= B.length <= 200
A 和 B 都只包含空格和小写字母。
解题思路:
一个单词在自己的句子中只允许出现一次,而且在别的句子还不能出现,也就是这个单词在两个句子中只能出现一次。考虑到用Map集合,Map集合特点是key不允许重复。
具体思路:先把A和B句子的所有元素全放进Map集合中,Map的key即为单词,如果存在2次及以上的单词value就置2,不存在就把元素放进来value值为1,最后用ArrayList集合存储Map集合中只出现一次的单词。
class Solution {
public String[] uncommonFromSentences(String A, String B) {
Map<String, Integer> map = new HashMap<>();
for(String i : A.split(" ")) {
if(!map.containsKey(i)) {
map.put(i, 1);
} else {
map.put(i, 2);
}
}
for(String i : B.split(" ")) {
if(!map.containsKey(i)) {
map.put(i, 1);
} else {
map.put(i, 2);
}
}
List<String> list = new ArrayList<>();
for(String i : map.keySet()) {
if(map.get(i) == 1) {
list.add(i);
}
}
return list.toArray(new String[list.size()]);
}
}