zl程序教程

您现在的位置是:首页 >  Java

当前栏目

力扣884. 两句话中的不常见单词(#Day24)

2023-02-18 16:23:56 时间

力扣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