LeetCode.884-两句话中不常见的单词(Uncommon Words from Two Sentences)
这是悦乐书的第338次更新,第362篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第207题(顺位题号是884)。我们给出了两个句子A和B。(一个句子是一串空格分隔的单词。每个单词只由小写字母组成。)如果一个单词在其中一个句子中只显示一次,并且不出现在另一个句子中,则该单词不常见。返回所有不常见单词的列表。你可以按任何顺序返回列表。例如:
输入:A = "this apple is sweet", B = "this apple is sour"
输出:["sweet","sour"]
输入:A = "apple apple", B = "banana"
输出:["banana"]
注意:
0 <= A.length <= 200
0 <= B.length <= 200
A和B都只包含空格和小写字母。
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 第一种解法
题目的要求有两点:
出现两次及以上的单词不要,无论在A中还是在B中。
A中单词不能出现在B中,B中单词不能出现在A中。
换一种方式来讲,最后的结果字符串数组只要出现一次的单词。所以,我们可以使用HashMap,以每个单词为key,以其出现次数为value,将字符串A、B按照空格拆分为字符串数组,遍历其中的元素,存入HashMap中,接着遍历HashMap,将value值为1的key元素添加进结果数组中,最后返回结果数组。
public String[] uncommonFromSentences(String A, String B) {
List<String> result = new ArrayList<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
String[] arr = A.split(" ");
for (String str : arr) {
map.put(str, map.getOrDefault(str, 0)+1);
}
String[] arr2 = B.split(" ");
for (String str : arr2) {
map.put(str, map.getOrDefault(str, 0)+1);
}
for (String key : map.keySet()) {
if (map.get(key) == 1) {
result.add(key);
}
}
return result.toArray(new String[result.size()]);
}
03 第二种解法
我们也可以将字符串A和B连接在一起,只使用一个for循环来处理单词,其他思路不变。
public String[] uncommonFromSentences2(String A, String B) {
List<String> result = new ArrayList<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
String[] arr = (A+" "+B).split(" ");
for (String str : arr) {
if (!str.isEmpty()) {
map.put(str, map.getOrDefault(str, 0)+1);
}
}
for (String key : map.keySet()) {
if (map.get(key) == 1) {
result.add(key);
}
}
return result.toArray(new String[result.size()]);
}
04 小结
算法专题目前已连续日更超过六个月,算法题文章207+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode.884-两句话中不常见的单词(Uncommon Words from Two Sentences)的更多相关文章
- leetcode 884. 两句话中的不常见单词 (python)
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- 领扣(LeetCode)两句话中的不常见单词 个人题解
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- leetcode-解题记录 884. 两句话中的不常见单词
题目 给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不 ...
- Leetcode884.Uncommon Words from Two Sentences两句话中的不常见单词
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)
题目标签:HashMap 题目给了我们两个句子,让我们找出不常见单词,只出现过一次的单词就是不常见单词. 把A 和 B 里的word 都存入 map,记录它们出现的次数.之后遍历map,把只出现过一次 ...
- [Swift]LeetCode884. 两句话中的不常见单词 | Uncommon Words from Two Sentences
We are given two sentences A and B. (A sentence is a string of space separated words. Each word co ...
- leetcode-884两句话中的不常见单词
''' 给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有 ...
- 神级程序员通过两句话带你完全掌握Python最难知识点——元类!
千万不要被所谓"元类是99%的python程序员不会用到的特性"这类的说辞吓住.因为 每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生 ...
- 两句话掌握python最难知识点——元类
千万不要被所谓“元类是99%的python程序员不会用到的特性”这类的说辞吓住.因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生万物 我是谁?我从哪来 ...
随机推荐
- yum进程被占用
使用yum安装软件的时候出现,/var/run/yum.pid 已被锁定,PID 为 6503 的另一个程序正在运行的问题 [root@localhost mysql]# yum install gc ...
- 原生js实现瀑布流效果
参考此篇:https://segmentfault.com/a/1190000012621936 以下为个人测试中: css: .masonry{ width:100%; } .item{ posit ...
- 利用 CSS animation 和 CSS sprite 制作动画
CSS3 大大强化了制作动画的能力,但是如果要做出图案比较复杂的动画,选择 GIF 依然是一个不错的选择.今天给大家介绍一个使用 CSS animation 配合雪碧图(CSS sprite)来制作动 ...
- 前端领域的BEM到底是什么
前端领域的BEM到底是什么 BEM - Block Element Modfier(块元素编辑器) BEM方法确保每一个参加了同一网站开发项目的人,基于一套代码规范去开发,这样非常有利于团队成员理解彼 ...
- 30.3 FCL中的混合构造
30.3.2 Monitor类和同步块 internal sealed class Transaction { private readonly object _lock = new object( ...
- snprintf不能使用"字符串指针"赋值,可以使用字符数组
#cat snprintf.c #include <stdio.h> #include <stdlib.h> #include <string.h> struct ...
- linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号
linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号 实现的功能是吧换行符换成逗号了,自己试验过. 求解释,:t N b t 都是什么意思??? :t 定义la ...
- soui edit passwrod模式下禁用输入法
一直在用soui做客户端界面,今天发现密码edit在中文输入法下不能输入密码.我在想难道不是这样吗,密码就该用英文输入法啊. 然后我就用mfc的做了个demo,发现mfc的edit在密码模式下是可以用 ...
- Centos 7中,防火墙配置端口规则
注意:firewalld服务有两份规则策略配置记录,配置永久生效的策略记录时,需要执行"reload"参数后才能立即生效: Permanent:永久生效的 RunTime:现在正在 ...
- 仿探探卡片滑动vue封装并发布到npm
项目初始化使用 webpack-simple 方式比较方便和容易配置,原来的方式各种坑慎入 vue init webpack-simple vue-card-slide cd vue-card-sli ...