题目链接:819. 最常见的单词
先把字符串的大写字母转为小写,然后使用正则表达式寻找到这个字符串中所有由相连的字母组成的子串,再对这些子串计数。最后从出现频率最高的字母开始遍历,返回第一个未出现在 banned 列表中的单词。
import re
from collections import Counter
from typing import List
class Solution:
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
banned = set(banned)
for word, cnt in sorted(Counter(re.findall(r'[a-z]+', paragraph.lower())).items(), key=lambda item: -item[1]):
if word not in banned:
return word
raise ValueError()