题:输入两句话,返回两句话中不常见单词列表。

“不常见单词”指在一句话中只出现一次,且另一句话没有出现。

解:直接按题意,求在一句话中只出现一次,且另一句话没有出现的单词。用Counter()计算次数。

class Solution:
def uncommonFromSentences(self, s1: str, s2: str) -> List[str]:
tokens1 = s1.split()
tokens2 = s2.split()
ans = []
cnt1 = Counter(tokens1)
cnt2 = Counter(tokens2)
#print(cnt1,cnt2)
for k, v in cnt1.items():
if v == 1 and k not in cnt2:
ans.append(k)
for k, v in cnt2.items():
if v == 1 and k not in cnt1:
ans.append(k)
return ans

简化一下,在一句中出现一次,另一句话不出现,就等价于在s1+s2中总共出现一次。

def uncommonFromSentences(self, s1: str, s2: str) -> List[str]:
s = s1+" "+s2
tokens = s.split()
ans = []
cnt = Counter(tokens)
for k, v in cnt.items():
if v == 1 :
ans.append(k)
return ans