解题思路:
一道非常简单的模拟题,中间有比较多的处理细节,包括逗号等标点符号的处理,所以就不直接用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;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)