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

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

解题思路:
一道非常简单的模拟题,中间有比较多的处理细节,包括逗号等标点符号的处理,所以就不直接用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;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存