zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    零基础学python-2.7 列表与元组
    什么是App加壳,以及App加壳的利与弊
    Linux tar包安装Nginx
    GT背靠背onsite
    编程算法
    DELPHI动态创建窗体
    扩展名为DBF的是什么文件啊?
    异构数据库之间完全可以用SQL语句导数据
    XP局域网访问无权限、不能互相访问问题的完整解决方案
    Delphi 之 菜单组件(TMainMenu)
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12741725.html
Copyright © 2011-2022 走看看