【力扣题解】884. 两句话中的不常见单词

😊博主目前也在学习,有错误欢迎指正😊
🌈保持热爱 奔赴星海🌈

一、题目

1、题目描述

句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。

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

给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。

2、基础框架

  • Java版本框架代码如下:
class Solution {
    public String[] uncommonFromSentences(String s1, String s2) {
    
    }
}

3、原题链接

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

二、解题报告

1、思路分析

       (1)将两个字符串分别以空格分隔开,分成字符串数组。
       (2)定义两个哈希表,分别记录当前单词在句子中出现的次数是否大于一次。
       (3)分别遍历两个字符串数组,判断数组中的元素是否是不常见的。

2、代码详解

class Solution {
    public String[] uncommonFromSentences(String s1, String s2) {
        ArrayList<String> list = new ArrayList();
        String[] c1 = s1.split(" ");
        String[] c2 = s2.split(" ");
        Map<String,Integer> map1 = new HashMap();
        Map<String,Integer> map2 = new HashMap();
        for(int i = 0;i < c1.length;i++) {
            if(!map1.containsKey(c1[i])) {
                map1.put(c1[i],0);
            }else {
                map1.put(c1[i],1);
            }
        }
        for(int i = 0;i < c2.length;i++) {
            if(!map2.containsKey(c2[i])) {
                map2.put(c2[i],0);
            }else {
                map2.put(c2[i],1);
            }
        }
        for(int i = 0;i < c1.length;i++) {
            if(map1.containsKey(c1[i]) && map1.get(c1[i]) == 0 && !map2.containsKey(c1[i])) {
               list.add(c1[i]);
            }
        }
        for(int i = 0;i < c2.length;i++) {
            if(map2.containsKey(c2[i]) && map2.get(c2[i]) == 0 && !map1.containsKey(c2[i])) {
               list.add(c2[i]);
            }
        }
         String[] res = new String[list.size()];
        return list.toArray(res);
    }
}



三、本题知识

哈希表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值