LeetCode刷题:两句话中的不常见单词

题目

  1. 两句话中的不常见单词
    给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)
    如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。
    返回所有不常用单词的列表。
    您可以按任何顺序返回列表。

题解

这道题其实是找出A+B中出现一次的单词

解法一
想到了Set集合可以去掉重复元素的特点,所以采用Set集合进行。

class Solution {
    List<String> ans=new ArrayList<>();
    public String[] uncommonFromSentences(String A, String B) {
        Set<String> st=new HashSet<>();
        String[] stA=A.split(" ");
        String[] stB=B.split(" ");
        int n=st.size();
        for(String s:stA){
            ans.add(s);
            st.add(s);
            if(n==st.size()){
                ans.remove(s);
                ans.remove(s);
            }
            n=st.size();

        }
        for(String s:stB){
           ans.add(s);
            st.add(s);
            if(n==st.size()){
                ans.remove(s);
                ans.remove(s);
            }
            n=st.size();
        }
        return ans.toArray(new String[ans.size()]);
    }
}

其中,List转数组,采用toArray方法,由于String是引用类型,所以注意要new String[]。

解法二
用Map的键值对,其中,获取某个Key的Value,采用getOrDefault()方法,从而实现在原有的Value上加1。

class Solution {
    List<String> ans=new ArrayList<>();
    public String[] uncommonFromSentences(String A, String B) {
      Map<String, Integer> count = new HashMap();
        for (String word: A.split(" "))
            count.put(word, count.getOrDefault(word, 0) + 1);
        for (String word: B.split(" "))
            count.put(word, count.getOrDefault(word, 0) + 1);

        List<String> ans = new LinkedList();
        for (String word: count.keySet())
            if (count.get(word) == 1)
                ans.add(word);

        return ans.toArray(new String[ans.size()]);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值