读书人

觅一个字符串里面字母出现最多次数的那

发布时间: 2012-10-23 12:12:22 作者: rapoo

找一个字符串里面字母出现最多次数的那个字符!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
在这里面看吧
[解决办法]
探讨
就想问一下 2楼为什么要定义成大小为 256 呢????

[解决办法]
探讨
就想问一下 2楼为什么要定义成大小为 256 呢????

[解决办法]
探讨
就想问一下 2楼为什么要定义成大小为 256 呢????

[解决办法]
基本思路就是对每个字母都有一个计数器,通过一次遍历以后得到每个字母的计数。然后再取得其中计数最大的那个就行了。

所以楼上有人给出了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;
}

[解决办法]
探讨
C/C++ codechar mostpresnet(char*test)
{
unsignedint app[256];
memset(app,0,sizeof(app));while(*test!='\0')++app[(unsignedchar)(*test)];char re=0;for(int i=0;i<256;++i)if(app[i]>app[re]) re=i;r¡­

读书人网 >C++

热点推荐