leetcode java 884. 两句话中的不常见单词

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()]);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43873349/article/details/92762806
今日推荐