LeetCode884. 两句话中的不常见单词

版权声明: https://blog.csdn.net/weixin_40550726/article/details/82824668

给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)

如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的

返回所有不常用单词的列表。

您可以按任何顺序返回列表。

示例 1:

输入:A = "this apple is sweet", B = "this apple is sour"
输出:["sweet","sour"]

示例 2:

输入:A = "apple apple", B = "banana"
输出:["banana"]

提示:

  1. 0 <= A.length <= 200
  2. 0 <= B.length <= 200
  3. A 和 B 都只包含空格和小写字母。

思路:将A,B中的单词存入哈希表。

class Solution {
    public String[] uncommonFromSentences(String A, String B) {
         List<String> res=new LinkedList<String>();
        Map<String,Integer> mapA=new HashMap<String,Integer>();
        Map<String,Integer> mapB=new HashMap<String,Integer>();
        String[] strA=A.split(" ");
        String[] strB=B.split(" ");
        for(String s:strA){
            if(mapA.containsKey(s)){
                mapA.put(s,mapA.get(s)+1);
            }else{
                mapA.put(s,1);
            }
        }
        for(String s:strB){
            if(mapB.containsKey(s)){
                mapB.put(s,mapB.get(s)+1);
            }else{
                mapB.put(s,1);
            }
        }
        for(String s:strA){
            if(!mapB.containsKey(s)&&mapA.get(s)==1){
                res.add(s);
            }
        }
        for(String s:strB){
            if(!mapA.containsKey(s)&&mapB.get(s)==1){
                res.add(s);
            }
        }
        int n=res.size();
        String str[]=new String[n];
        for(int i=0;i<n;i++){
            str[i]=res.get(i);
        }
        return str;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_40550726/article/details/82824668