链接:http://poj.grids.cn/practice/2742/
题目:
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多
- 输入
- 第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串
每组测试数据之间有一个空行,每行数据不超过1000个字符且非空- 输出
- n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。
如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符- 样例输入
2 abbccc adfadffasdf- 样例输出
c 3 f 4
代码:
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 freopen("F:\\input.txt","r",stdin); 6 7 int cases,sum[26],i,max; 8 char str[1001]; 9 10 scanf("%d",&cases); 11 while(cases--) 12 { 13 scanf("%s",str); 14 //for(i = 0; i < 26; i++) sum[i] = 0; 15 memset(sum,0,sizeof(int)*26); 16 int length = strlen(str); 17 max = 0; 18 for(i = 0; i < length; i++) 19 { 20 sum[str[i] - 'a'] ++; 21 //if(sum[str[i] - 'a'] > sum[max]) max = str[i] - 'a'; 22 } 23 for(i = 0;i < 26; i++) 24 { 25 if(sum[i] > sum[max]) max = i; 26 } 27 28 printf("%c %d\n",max + 'a',sum[max]); 29 } 30 31 return 0; 32 }
思路:
1.无语了,想统计数量的时候求出最大的数,就老是WA,改成统计完再找出最大值就不会,不知道为什么