http://poj.grids.cn/practice/2742
描述判斷一個由a-z這26個字符組成的字符串中哪個字符出現的次數最多輸入第1行是測試數據的組數n,每組測試數據占1行,是一個由a-z這26個字符組成的字符串
每組測試數據之間有一個空行,每行數據不超過1000個字符且非空輸出n行,每行輸出對應一個輸入。
一行輸出包括出現次數最多的字符和該字符出現的次數,中間是一個空格。
如果有多個字符出現的次數相同且最多,那么輸出ascii碼最小的那一個字符樣例輸入
2 abbccc adfadffasdf
樣例輸出
c 3 f 4
我們可以設置一個數組sum[26];用來自己了輸入字符串中每個字母的出現數字,字母c的出現次數在數組元素sum[c-'a'].而且我們不要專門去開一個字母和sum的對照表,因為字母和sum本來就有對應關系。
#include<stdio.h> #include<string.h> int main() { int nCases; char a[1001]; int sum[26],max; scanf("%d",&nCases); while(nCases--) { scanf("%s",a); for(int i=0;i<26;i++) sum[i]=0; for(int i=0;i<strlen(a);i++) sum[a[i]-'a']++; max=0; for(int i=1;i<26;i++) { if(sum[i]>sum[max]) max=i; } printf("%c %d\n",max+'a',sum[max]); } }
在處理字符串時,存儲長度為N的字符串,數組長度>=N+1;