UVA 499
题意是求出字符串中出现次数最多的字母,并求出字母出现的次数,注意字母可能多个
#include<stdio.h> #include<string.h> int jisuan(char *s,int *i) { int k=0; char ss=*s; while((*s)==ss) { s++; k++; (*i)++; } (*i)--; //回到主函数时有i++,所以这里要减一 return k; }//这个函数用于计算相同字母出现的次数 int main() { int i,j,k,f[26],num; char str[1000],temp,ans[55]; while(gets(str)) { for(j=1;j<strlen(str);j++) for(i=0;i<strlen(str)-j;i++) if(str[i+1]<str[i]) { temp=str[i+1]; str[i+1]=str[i]; str[i]=temp; } //先将字符串进行排序,便于计算 k=j=0; for(i=0;i<strlen(str);i++) { if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')) { num=jisuan(&str[i],&i); if(num>k) { j=0;//这里是考虑到前面有相等,而后面又出现更多的的情况 ans[j]=str[i]; k=num; }//有字母出现更多的,覆盖掉原来的 else if(num==k) { j++; ans[j]=str[i];//相等就排在后面 } } } ans[++j]='\0';//防止多于的字符输出 printf("%s %d\n",ans,k); } return 0; }