力扣884. 两句话中的不常见单词
某个单词在其中一个句子中出现一次,在另一个句子中没有出现,那么我们可以将两个句子的单词合并,统计每个单词出现的次数,次数为1的即为只出现一次的不常见单词。这个思路可以用哈希表实现,key记录单词,value记录出现次数:
def hash_solution(s1: str, s2: str) -> List[str]:
s = s1.split() + s2.split()
hash_dic = defaultdict(int)
res = []
for i in s:
hash_dic[i] += 1
for i, j in hash_dic.items(): # 哈希表的key是单词,值是出现的次数
if j == 1:
res.append(i)
return res
s1 = "this apple is sweet"
s2 = "this apple is sour"
print(hash_solution(s1, s2)) # ['sweet', 'sour']
相同的思路也可以直接用python的库函数count直接计数来实现:
def uncommonFromSentences(s1: str, s2: str) -> List[str]:
s = s1.split() + s2.split()
return [i for i in s if s.count(i) == 1]
对于哈希表的解法是需要先存好,然后再遍历,为了简化书写可以使用海象表达式来实现(海象符要放在括号里):
def walrus_solution(s1: str, s2: str) -> List[str]:
return [k for k, v in c.items() if v == 1] if (c := Counter(s1.split()) + Counter(s2.split())) else []
END