LeetCode 819 最常见的单词[Map 模拟] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 819 最常见的单词[Map 模拟] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
一道非常简单的模拟题,中间有比较多的处理细节,包括逗号等标点符号的处理,所以就不直接用python字符串分割了。首先把ban的word放入map中用-1来表示,然后一个字母一个字母遍历,每次遍历出一个单词(都转换为小写)后判断是否是ban的再放入map中,i <= len是为了将最后一个word也能在for循环中判断,在更新map的过程中统计最大数量的word,代码如下:

class Solution 
public:
    string mostCommonWord(string paragraph, vector<string>& banned) 
        unordered_map<string, int> mp;
        // 标记禁用词
        for(auto& ban : banned) 
            mp[ban] = -1;
        
        int len = paragraph.size();
        string word, target;
        int maxFre = 0;
        for(int i = 0; i <= len; i ++) 
            if(i < len && isalpha(paragraph[i])) 
                word += tolower(paragraph[i]);
             else if(word.size() > 0) 
                if(mp[word] != -1) 
                    mp[word] ++;
                    if(mp[word] > maxFre) 
                        maxFre = mp[word];
                        target = word;
                     
                
                word = "";
            
        
        return target;
    
;

以上是关于LeetCode 819 最常见的单词[Map 模拟] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

字符串819. 最常见的单词

[LeetCode] 819. Most Common Word

Java n种方式分割统计单词

819. 最常见的单词

算法千题案例每日LeetCode打卡——97.最常见的单词

算法千题案例每日LeetCode打卡——97.最常见的单词