题解 | #字符统计#

字符统计

http://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0

建立count[36]数组,如下图。记录数字和小写字母的个数。如,字符串中有3个'8',count[8]=3.有6个'b',count[11]=6.

第一轮,找到最大的count[i],令max=最大值;pos=i.输出pos对应的字符。若pos<10,输出pos+'a'.否则,输出pos-10+'a'

令count[pos]=0;重置max=0,pos=0.

第二轮重复第一轮。

循环的结束条件:每轮找到最大值max后,若max=0,跳出循环,否则输出pos对应的字符。

alt

#include<stdio.h>
#include<string.h>
int main(){
    int count[36]={0};
    char str[1001]={'\0'};
    while(scanf("%s",str)>0){
        for(int i=0;i<strlen(str);i++){
            if(str[i]>='0'&&str[i]<='9')
                count[str[i]-'0']++;
            if(str[i]>='a'&&str[i]<='z')
                count[str[i]-'a'+10]++;
        }
        int max=0,pos=0;
        while(1){
            for(int i=0;i<=35;i++){
            if(count[i]>max){
                max=count[i];
                pos=i;
                }
            }
            if(max==0)
                break;
            if(pos<10)
                printf("%c",pos+'0');
            else printf("%c",pos-10+'a');
            count[pos]=0;
            max=0;
            pos=0;
        }
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务