0884. 两句话中的不常见单词
大约 2 分钟
0884. 两句话中的不常见单词
- 标签:哈希表、字符串
- 难度:简单
题目链接
题目大意
描述:给定两个字符串 和 ,分别表示两个句子。
要求:返回所有不常用单词的列表。返回列表中单词可以按任意顺序组织。
说明:
- 句子:是一串由空格分隔的单词。
- 单词:仅由小写字母组成的子字符串。
- 不常见单词:如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。
- 。
- 和 由小写英文字母和空格组成。
- 和 都不含前导或尾随空格。
- 和 中的所有单词间均由单个空格分隔。
示例:
- 示例 1:
输入:s1 = "this apple is sweet", s2 = "this apple is sour"
输出:["sweet","sour"]
- 示例 2:
输入:s1 = "apple apple", s2 = "banana"
输出:["banana"]
解题思路
思路 1:哈希表
题目要求找出在其中一个句子中恰好出现一次,在另一个句子中却没有出现的单词,其实就是找出在两个句子中只出现过一次的单词,我们可以用哈希表统计两个句子中每个单词的出现频次,然后将出现频次为 的单词就是不常见单词,将其加入答案数组即可。
具体步骤如下:
- 遍历字符串 、,使用哈希表 统计字符串 、 各个单词的出现频次。
- 遍历哈希表,找出出现频次为 的单词,将其加入答案数组 中。
- 遍历完返回答案数组 。
思路 1:代码
class Solution:
def uncommonFromSentences(self, s1: str, s2: str) -> List[str]:
table = dict()
for word in s1.split(' '):
if word not in table:
table[word] = 1
else:
table[word] += 1
for word in s2.split(' '):
if word not in table:
table[word] = 1
else:
table[word] += 1
res = []
for word in table:
if table[word] == 1:
res.append(word)
return res
思路 1:复杂度分析
- 时间复杂度:,其中 、 分别为字符串 、 的长度。
- 空间复杂度:。