当前位置:   article > 正文

统计字符串中出现次数最多的单词_给一个字符串,需要求其出现次数最多的单词

给一个字符串,需要求其出现次数最多的单词

题意

令“单词”定义为大小写字母和数字的组合,给出一个字符串,问出现次数最多的单词机器出现的次数(一切除了大小写字母和数字之外的字符都作为单词的分隔符),其中字母不区分大小写,且最后按照小写字母输出。

思路:从给定的字符串中分割出“单词”,计数出现次数最多的单词(用map实现)

  1. #include<iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <map>
  5. using namespace std;
  6. bool check(char c) {
  7. if (c >= '0' && c <= '9') return true;
  8. if (c >= 'A' && c <= 'Z') return true;
  9. if (c >= 'a' && c <= 'z') return true;
  10. return false;
  11. }
  12. void SpeechPatterns() {
  13. map<string, int> res;
  14. string str;
  15. getline(cin, str);
  16. for (int i = 0; i < str.size(); i++) {
  17. if (str[i] >= 'A' && str[i] <= 'Z') {
  18. str[i] += 32;
  19. }
  20. }
  21. for (int i = 0; i < str.size(); ) {
  22. while (!check(str[i])&& i < str.size()) {
  23. i++;
  24. }
  25. string temp;
  26. while (check(str[i])&& i < str.size()){
  27. temp += str[i];
  28. i++;
  29. }
  30. res[temp]++;
  31. }
  32. pair<string, int> ans;
  33. for (map<string, int>::iterator it = res.begin(); it != res.end(); it++) {
  34. if (ans.second < it->second) {
  35. ans.first = it->first;
  36. ans.second = it->second;
  37. }
  38. }
  39. cout << ans.first<<":"<<ans.second;
  40. }

参考资料:算法笔记上机篇P250

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/527281
推荐阅读
相关标签
  

闽ICP备14008679号