找一个字符串里面字母出现最多次数的那个字符!c++
今天去参加笔试,出现了这么一道题···我用我的方法做咯觉得写得很复杂,想看看大家是怎么写的啊???
谢谢了先··是用C++哦···
[解决办法]
- C/C++ code
char mostpresnet(char *test){ unsigned int app[256]; memset(app,0,sizeof(app)); while(*test!='\0') ++app[(unsigned char)(*test)]; char re=0; for(int i=0;i<256;++i) if(app[i]>app[re]) re=i; return re;}
[解决办法]
http://so.csdn.net/bbsSearchResult.aspx?q=%e5%87%ba%e7%8e%b0%e6%ac%a1%e6%95%b0%e6%9c%80%e5%a4%9a%e7%9a%84%e5%ad%97%e7%ac%a6&p=0
在这里面看吧
[解决办法]
[解决办法]
[解决办法]
[解决办法]
基本思路就是对每个字母都有一个计数器,通过一次遍历以后得到每个字母的计数。然后再取得其中计数最大的那个就行了。
所以楼上有人给出了app[256]的定义。因为单个字符的话显然不超过256个。并且刚好ascii码值可以作索引。
[解决办法]
char mostpresnet(char *test)
{
map<char,int> cmap;
while(*test!='\0')
{
cmap[*test]++;
test++;
}
map<char,int>::iterator it=cmap.begin();
char find=it->first;
int max=0;
for(;it!=cmap.end();it++)
if(max<it->second){
max=it->second;
find=it->first;
}
}
return find;
}
[解决办法]