1369. 最频繁单词

1369. 最频繁单词

中文English

给定一个段落和一组限定词,返回最频繁的非限定单词。已知至少有一个单词是非限定的,并且答案唯一。
限定词都是以小写字母给出,段落中的单词大小写不敏感。结果请返回小写字母。

样例

样例1

输入: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit." 和 banned = ["hit"]
输出: "ball"
解释:
"hit" 出现3次但是限定词。
"ball" 出现两次,是最频繁的非限定词。
注意段落中大小写不敏感。
标点符号请忽略 (即使紧挨单词,例如"ball,"), 

样例2

输入: paragraph = "a a a b b c c d" 和 banned = ["a","b"]
输出: "c"
解释:
"a"和"b"都是限定词
"c"出现了2次,而"d"只出现过一次
所以输出"c"

注意事项

  • 1 <= paragraph.length <= 1000.
  • 1 <= banned.length <= 100.
  • 1 <= banned[i].length <= 10.
  • 答案唯一,并且返回小写(即使以大写字母出现在段落中就,或是一个专有名词.)
  • 段落仅由字母、空格、标点!?',;.组成。
  • 不同的单词会被空格隔开.
  • 没有连字符或者连字单词.
  • 单词仅由小写字母组成,没有所有格或别的标点符号。
class Solution:
    """
    @param paragraph: 
    @param banned: 
    @return: nothing
    """
    '''
    大致思路:
    1.初始化字典dic,循环paragraph,如果出现不是字符的,则说明是一个完整的单词,同时需要判断是否在banned里面,然后需要加到字典里面,进行计数.
    2.循环字典,判断哪个v是最大的,则返回对应的k即可。
    '''
    def mostCommonWord(self, paragraph, banned):
        dic = {}
        c = ''
        for i in paragraph + ' ':
            if i.isalpha() == True:
                c += i
            else:
                if c.lower() not in banned and c != '':
                    dic[c.lower()] = dic.get(c.lower(),0) + 1
                c = ''
        m = 0
        res = ''
        for k,v in dic.items():
            if v>m:
                res = k
                m = v
        return res
原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12741725.html