leetcode-884-两句话中的不常见单词
题目描述:
给定两个句子 A
和 B
。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)
如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。
返回所有不常用单词的列表。
您可以按任何顺序返回列表。
示例 1:
输入:A = "this apple is sweet", B = "this apple is sour"
输出:["sweet","sour"]
示例 2:
输入:A = "apple apple", B = "banana"
输出:["banana"]
提示:
0 <= A.length <= 200
0 <= B.length <= 200
A
和B
都只包含空格和小写字母。
要完成的函数:
vector<string> uncommonFromSentences(string A, string B)
说明:
1、做久了medium的题目,回过头来做一道新出的easy题,感觉真是十分畅爽啊。
这道题给定两个字符串A和B,A和B中只包含空格和小写字母,要求找出在A中只出现一次并且在B中没有出现的单词,同时再找出在B中只出现一次并且在A中没有出现的单词。
把这些单词插入到vector中,最终返回包含string格式的vector。
2、其实考虑一下,就会发现这道题其实是要找只出现一次的单词。
如果某个单词在A中出现了两次,那么不用返回。如果某个单词在B中出现了两次,也不用返回。
如果某个单词在A中出现了一次,在B中出现了一次,那么也不用返回。
所以我们需要返回的只是 只出现一次的单词。
代码如下:(附详解)
vector<string> uncommonFromSentences(string A, string B)
{
unordered_map<string,int>m1;//定义成unordered_map不需要排序,更省时间
vector<int>res;//最终要返回的vector
int i=0,j=0;
while(j<=A.size())//把A中每一个单词切分出来
{
if(A[j]==' '||A[j]=='\0')
{
m1[A.substr(i,j-i)]++;//默认初始化为0,所以直接++就好
i=j+1;//i更新到j的下一位,也就是下一个单词的首位
}
j++;
}
i=0,j=0;
while(j<=B.size())//同样操作,把B中每一个单词切分出来
{
if(B[j]==' '||B[j]=='\0')
{
m1[B.substr(i,j-i)]++;
i=j+1;
}
j++;
}
for(auto iter=m1.begin();iter<m1.end();iter++)//遍历一遍map,看一下哪一个单词出现次数是1
{
if(iter->second==1)
res.push_back(iter->first);//把这个单词插入到vector中
}
return res;
}
上述代码实测0ms,beats 100.00% of cpp submissions。
leetcode-884-两句话中的不常见单词的更多相关文章
- leetcode 884. 两句话中的不常见单词 (python)
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- leetcode-解题记录 884. 两句话中的不常见单词
题目 给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不 ...
- 领扣(LeetCode)两句话中的不常见单词 个人题解
给定两个句子 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 . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有 ...
- C#LeetCode刷题之#884-两句话中的不常见单词(Uncommon Words from Two Sentences)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3816 访问. 给定两个句子 A 和 B . (句子是一串由空格分 ...
- 神级程序员通过两句话带你完全掌握Python最难知识点——元类!
千万不要被所谓"元类是99%的python程序员不会用到的特性"这类的说辞吓住.因为 每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生 ...
随机推荐
- PHP语言性能优化——少使用魔术方法
对以下使用魔术方法和不适用魔术方法运行时间进行比较 使用魔术方法test1.php: <?php /** * 测试类 */ class test { private $name = " ...
- Android JIN简单单步调试
ADTr20已经比较完美支持NDK开发了.可以集成ndk编译,只需在项目右键Add Native Support,就能自动生成jni文件,并部署编译环境(注意这个过程是不可逆的,手动删除jni文件后, ...
- docker-compose示例与命令介绍
一.docker-compose.yml示例 version: ‘2‘ #指定compose版本 services: log: #服务名称 image: vmware/harbor-log #指定镜像 ...
- windows环境下配置tornado
1.前言 在网上看过一些在windows下配置tornado的教程,有一些写的十分复杂,让人望而生却.然后我就自己试着在windows下面配置tornado.我发现,方法非常简单,短短几 ...
- md1
a b link to baidu 我不懂啊 这是什么意思 http://example.com/ 这里是一段代码' adsfasdf 你 你输得算好了 反正就这样吧,大概也值能这样了注 我想写一段引 ...
- lucene学习笔记(四)lucene分词详解
分词器的核心类 Analyzer SimpleAnalyzer StopAnalyzer WhitespaceAnalyzer StandardAnalyzer TokenStream 分词器做好处理 ...
- 谈谈INotifyPropertyChanged和ICommand
WPF,Windows8和Windows Phone开发中的MVVM设计模式中很重要的两个接口是INotifyPropertyChanged和ICommand,深入理解这两个接口的原理,并掌握其正确的 ...
- CHARPTER 3--INDEX DMVs
1.查找最重要的缺失的索引 --======================================================= --查找最重要的缺失的索引 ) DB_NAME() AS ...
- Mathout In Action(中文)
http://download.csdn.net/detail/zxnm55/5593881
- driver.get()和driver.navigate().to()到底有什么不同?-----Selenium快速入门(四)
大家都知道,这两个方法都是跳转到指定的url地址,那么这两个方法有什么不同呢?遇到这种情况,第一反应就是查查官方的文档. 官方文档的说法是:Load a new web page in the cur ...