sdut文字統計2
2638 ワード
Problem Description
英語の文を入力し、スペースを除いて最も多くの文字とその出現回数を出力します.
Input
入力データには複数のテストインスタンスが含まれており、各テストインスタンスは100を超えない英語の文で、1行を占めています.
Output
各文の中で最も多く出現した文字とその出現回数を行ごとに出力します(複数文字の回数が同じであれば、ASCIIコードの最小文字のみを出力します).
Example Input
I am a student
a good programming problem
ABCD abcd ABCD abcd
Example Output
a 2
o 4
A 2
Hint
Authord
コード:
#include
#include
#include
int main()
{
int k,l,m,n,i,j,max;
char s[102];
int t[102];
char st[102];
while(gets(st))
{
m=0;
k=strlen(st);
for(i=0; i {
if(st[i]!=0&&st[i]!=')/文字スペースについては議論しない
{
n=1;
s[m]=st[i];//新しい文字列グループを設定し、各異なる文字を配列に入れる
for(j=i+1; j {
if(st[i]==st[j])
{
st[j]=0;//前の文字に等しいものを識別し、ループしたときに直接スキップします.
n++;
}
}
t[m]=n;//異なる文字ごとの出現回数
m++;
}
}
max=t[0];//最大値が1文字目の個数を設定する
l=0;
//リングで最大値を得る
for(i=1; i {
if(t[i]>max)
{
max=t[i];
l=i;
}
if(t[i]==max)/文字の個数が等しい場合、誰のascill値を比較することで最大値を取得します
{
if(s[i]>s[l])
{
max=t[l];
}
else
{
max=t[i];
l=i;
}
}
}
printf("%c %d",s[l],max);
}
return 0;
}