统计字符串中出现次数最多的单词

  • Post author:
  • Post category:其他


题意

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

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

#include<iostream>
#include <string>
#include <algorithm>
#include <map>

using namespace std;

bool check(char c) {
	if (c >= '0' && c <= '9') return true;
	if (c >= 'A' && c <= 'Z') return true;
	if (c >= 'a' && c <= 'z') return true;
	return false;
}

void SpeechPatterns() {
	map<string, int> res;
	string str;
	getline(cin, str);
	for (int i = 0; i < str.size(); i++) {
		if (str[i] >= 'A' && str[i] <= 'Z') {
			str[i] += 32;
		}
	}
	for (int i = 0; i < str.size(); ) {
		while (!check(str[i])&& i < str.size()) {
			i++;
		}
		string temp;
		while (check(str[i])&& i < str.size()){
			temp += str[i];
			i++;
		}
		res[temp]++;
	}
	pair<string, int> ans;
	for (map<string, int>::iterator it = res.begin(); it != res.end(); it++) {
		if (ans.second < it->second) {
			ans.first = it->first;
			ans.second = it->second;
		}
	}
	cout << ans.first<<":"<<ans.second;
}

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



版权声明:本文为HurryRabbit原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。