1071.Speech Patterns

来源:互联网 发布:suse linux 网关 编辑:程序博客网 时间:2024/06/11 10:14
【题意】
        找出一行输入的字符串中最常使用的词,大小写不敏感

【思路】

        从前往后扫描,用两个指针记下子字符串的起始位置和终止位置,并将分出来的词存在记录出现次数的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;}


0 0
原创粉丝点击