【2月15日PAT刷题笔记】——字符串处理的一些相关技巧函数

虽然题目这么写,也没有多少技巧啦,主要就是刷这道题的时候

 1071 Speech Patterns (25分)

 就是,can在这句话中出现了5次,是出现次数最多的,所以输出了:can 5。统计出现次数时,大小写不敏感。

两个函数

1.isalnum()函数,头文件是#include<cctype>,它的意义是:判断一个字符是否为数字或字母,是就返回非零值,否就返回零。

2.tolower()函数, 头文件同样是#include<cctype>它的意义是:将字母字符转换成小写,非字母字符不做出处理。

3.toupper()函数 ,同2,是将字母字符转换成大写,非字母字符不作出处理。

最后是这道题的代码

#include<bits/stdc++.h>
using namespace std;
string str,t="";
map<string,int>mp;
int main() {
	getline(cin,str);
	int length=str.length();
	for(int i=0; i<length; i++) {
		if(isalnum(str[i])) {
			str[i]=tolower(str[i]);
			t+=str[i];
		}
		if(!isalnum(str[i])||i==length-1) {
			if(t.length()!=0)
				mp[t]++;
			t="";
		}
	}
	string ans="";
	int maxlength=0;
	for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++){
		if(it->second>maxlength){
			maxlength=it->second;
			ans=it->first;
		} else if(it->second==maxlength){
			if(it->first<ans) ans=it->first;
		}
	}
	cout<<ans<<" "<<maxlength<<endl;
	return 0;
}
原创文章 70 获赞 25 访问量 7159

猜你喜欢

转载自blog.csdn.net/weixin_43727229/article/details/104335576