1071.Speech Patterns

【題意】
        找出一行輸入的字符串中最常使用的詞,大小寫不敏感

【思路】

        從前往後掃描,用兩個指針記下子字符串的起始位置和終止位置,並將分出來的詞存在記錄出現次數的map中即可


#include <iostream>
#include <string>
#include <map>
using namespace std;

bool isCharacter(char ch){
	return (ch>='0' && ch<='9') || (ch>='a' && ch<='z') || (ch>='A' && ch<='Z');
}

int main(int argc, char const *argv[])
{
	map<string,int> strs;
	string rawStr;

	getline(cin,rawStr);

	string str;
	int left,right;
	left = right = 0;
	for(int i=0; i<rawStr.length(); i++){
		if(isCharacter(rawStr[i])){
			if(rawStr[i]>='A' && rawStr[i]<='Z'){
				rawStr[i] -= 'A'-'a';
			}
			right++;
		}
		else{
			if(left<right){
				str.assign(rawStr,left,right-left);
				strs[str]++;
			}
			left = right = i+1;
		}
	}

	if(left<right){
		str.assign(rawStr,left,right-left);
		strs[str]++;
	}

	int maxCnt = 0;
	for(map<string,int>::iterator it=strs.begin(); it!=strs.end(); it++){
		if((*it).second>maxCnt){
			maxCnt = (*it).second;
			str = (*it).first;
		}
	}

	cout << str << " " << maxCnt;

	system("pause");
	return 0;
}


發佈了99 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章