gpt4 book ai didi

c++ - 使用 unordered_map 方法在 C++ 中查找最(多个)常用词

转载 作者:行者123 更新时间:2023-11-30 04:49:27 31 4
gpt4 key购买 nike

从文本输入中找出最常见的词,不包括给定词的列表。如果有多个最大字数,则全部显示。

我的方法是 21/24 个测试用例,我似乎想不出我遗漏的 3 个测试用例。

我正在添加我现在拥有的代码,这对我来说是高效的。我现在不想用另一种方式来实现它(尽管建议是最受欢迎的),我只是想就我遗漏的可能测试用例征询您的意见。

 vector<string> mostCommonWord(string paragraph, vector<string>& banned) {
unordered_map<string, int>m;


for(int i = 0; i < paragraph.size();){
string s = "";
while(i < paragraph.size() && isalpha(paragraph[i])) s.push_back(tolower(paragraph[i++])); // go through till you find one word completely
while(i < paragraph.size() && !isalpha(paragraph[i])) i++; // avoid all the white spaces and other characters
m[s]++; // include the word found and increment its count
}
for(auto x: banned) m[x] = 0; // make the count of all the banned words to be 0

vector<string> result;
string res = "";
int count = INT_MIN;
// find the maximum count
for(auto x: m)
if(x.second > count) count = x.second;
// we might have the case where all the words were in banned words, which would result the count == -1, so return an empty vector in this case
if(count <= 0) return result;
// add the words corresponding to that to the final vector<string>
for(auto x: m)
if(x.second == count) result.push_back(x.first);
return result;
}

它适用于我能想到的所有场景,但未能通过 3 个测试用例。我没有访问这些测试用例的权限,只是想讨论它可能是什么!

最佳答案

  1. 您确定其他字符(数字)应该被视为单词分隔符吗?
  2. 如果 paragraph 以空格或非字母字符开头,您将在映射中插入空字符串:m[""] = 1

关于c++ - 使用 unordered_map 方法在 C++ 中查找最(多个)常用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55388903/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com