用C++实现检测一个字符串中字符出现次数的函数(可识别中英文)

做了一道网申面试题:请使用你熟悉的编程语言(答题时请标注出是何种语言)实现一个函数,用于统计一个输入字符串中各个不同字符出现的次数。主要使用C++stl容器来实现,比较方便。

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

using namespace std;

int main() {
map<char, int> m;           //建立一个由英文字符映射至出现次数的集合 
map<pair<char,char> ,int> n;//建立一个由中文字符映射至出现次数的集合 
map<int,pair<char,char> > u;//建立一个过渡集合,用来存储每个出现过的中文字符 
string s;
int i;int j=0;
getline(cin,s);   //输入一个字符串,以回车结束 
	for(i=0;i<s.size();i++){
		if ((s[i] & 0x80)!=0) {
			u[j].first=s[i];
			u[j].second=s[i+1];  //若检测为中文字符,则按出现顺序拆分存储至pair集合 
	           i++;              
	        n[u[j ] ]++;         //对重复出现的pair集合进行计数 
			   j++;           }    
	    else   
	    	m[s[i] ]++;    }     //若为英文字符,则对重复出现的字符进行计数 
    for(map<char, int>::iterator t=m.begin();t!=m.end();t++)    
    	cout<<"字符"<<t->first<<"出现的次数为"<<t->second<<"次"<<endl;
    for(map<pair<char,char>, int>::iterator p=n.begin();p!=n.end();p++)    
     	cout<<"字符"<<p->first.first<<p->first.second<<"出现的次数为"<<p->second<<"次"<<endl;    

   
	return 0;
}

测试用例:Zeng Tian HAO 是我
输出:
Zeng tian hao 是我
字符 出现的次数为3次
字符Z出现的次数为1次
字符a出现的次数为2次
字符e出现的次数为1次
字符g出现的次数为1次
字符h出现的次数为1次
字符i出现的次数为1次
字符n出现的次数为2次
字符o出现的次数为1次
字符t出现的次数为1次
字符是出现的次数为1次
字符我出现的次数为1次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值