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程序员不会用到的特性”这类的说辞吓住.因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生万物 我是谁?我从哪来 ...
随机推荐
- Appium 使用android_uiautomator定位元素时报错: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource
使用 android_uiautomator 定位元素时(现在用的还不太熟,对于这个方法还需要加深了解)报错: 报错信息:The requested resource could not be fou ...
- 谷歌通过ajax获取本地JSON文件,为什么会提示跨域?
在本地写了一段JSON代码,然后用ajax读取后,在浏览器打开,发现谷歌提示涉及到跨域问题, 但是跨域是由于协议,域名,端口中有一个不同,才会跨域,我在本地访问自己的文件,怎么和跨域扯上关系了?? 下 ...
- C# 通知机制 IObserver<T> 和 IObservable<T>
class Program { public static void Main() { // Define a provider and two observers. LocationTracker ...
- 环形缓冲区: ringbuf.c
#cat aa.c /*ringbuf .c*/ #include<stdio.h> #include<ctype.h> #define NMAX 8 int iput = 0 ...
- 模拟Spring容器的getBean方法(Maven工程)
Spring容器的getBean方法是通过反射机制实现的,下面的测试程序模拟getBean的实现原理. 步骤一:pom.xml文件配置解析XML文件的dom4j.jar 步骤二:XML文件中配置bea ...
- hdu2006 求奇数的乘积【C++】
求奇数的乘积 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- mysql-索引、导入、导出、备份、恢复
1.索引 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容. 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行 ...
- Django——6 模型基础ORM 数据库连接配置 模型的创建与映射 数据的增删改查
Django Django的ORM简介 数据库连接配置 模型的创建与映射 数据库的增删改查 增数据 查数据及补充 改数据 删数据 Django的ORM系统分析 ORM概念:对象关系映射(Objec ...
- 公钥基本结构(PKI)的概念
公钥证书 ,通常简称为证书 ,用于在 Internet.Extranet 和 Intranet 上进行身份验证并确保数据交换的安全.证书的颁发者和签署者就是众所周知的 证书颁发机构 (CA),将在下一 ...
- Mysql中文乱码以及导出为sql语句和Excel问题解决
Mysql中文乱码以及导出为sql语句和Excel问题解决 这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看.一.导出数据 ...