#include<stdio.h>
#include<map>
#include<iostream>
#include<string>
using namespace std;
bool check(char c){
if(c>='a'&&c<='z') return true;
if(c>='A'&&c<='Z') return true;
if(c>='0'&&c<='9') return true;
else return false;
}
int main(){
map<string,int> Count;
string s;
getline(cin,s);
int k=0;
while(k<s.size()){
string word;
while(check(s[k])==true&&k<s.size()){
if(s[k]>='A'&&s[k]<='Z'){
s[k]+=32;
}
word+=s[k];
k++;
}
if(word !=""){
if(Count.find(word)==Count.end()){
Count[word]=1;
}else{
Count[word]++;
}
}
while(check(s[k])==false&&k<s.size()){
k++;
}
}
int Max=0;
for(map<string,int>::iterator it=Count.begin();it!=Count.end();it++){
if(it->second>Max){
Max=it->second;
s=it->first;
}
}
cout<<s<<" "<<Max<<endl;
return 0;
}
第一次,参考算法笔记完成,35min
判空条件if(word !=""),if(word !=’’) 应为双引号
#include<stdio.h>
#include<map>
#include<iostream>
using namespace std;
bool isright(char s){
if((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') || (s >= '0' && s <= '9'))
return true;
return false;
}
int main(){
string str1, t;
map<string, int> mp;
getline(cin,str1);
for(int i = 0; i < str1.size(); i++){
if(isright(str1[i]) == true){
str1[i] = tolower(str1[i]);
t += str1[i];
}
if(!isright(str1[i]) || i == str1.size() - 1) {
if(t.size() != 0) mp[t]++;
t="";
}
}
int Max = 0;
for(auto it = mp.begin(); it != mp.end(); it++){
if(it -> second > Max){
t= it -> first;
Max = it -> second;
}
}
cout<<t<<" "<<Max;
return 0;
}
#include<stdio.h>
#include<map>
#include<iostream>
#include<cctype>
using namespace std;
int main(){
string str1, t;
map<string, int> mp;
getline(cin,str1);
for(int i = 0; i < str1.size(); i++){
if(isalnum(str1[i]) == true){
str1[i] = tolower(str1[i]);
t += str1[i];
}
if(!isalnum(str1[i]) || i == str1.size() - 1) {
if(t.size() != 0) mp[t]++;
t="";
}
}
int Max = 0;
for(auto it = mp.begin(); it != mp.end(); it++){
if(it -> second > Max){
t= it -> first;
Max = it -> second;
}
}
cout<<t<<" "<<Max;
return 0;
}
0分,
将 if(isalnum(str1[i]) == true)改为 if(isalnum(str1[i]))可得满分;
原因在于 isalnum(str1[i]) 返回值不只是0、1,是0与非零值,而true==1
比如isalpha(b)判断b是否是英文字母,小写返回2,大写返回1,不是英文字母返回0;
isalnum、isalpha头文件为#include<iostream’>