ブルーブリッジカップ: 単語分析

トピックの説明

シャオランは魔法の言語を学んでいます。この言語の単語はすべて英小文字で構成されており、一部の単語は非常に長く、通常の英語の単語の長さをはるかに超えています。シャオランさんは、長い間勉強したにもかかわらず、いくつかの単語を思い出せなかったので、それらの単語を完全に暗記するのではなく、単語の中でどの文字が最も多く出現するかによって単語を区別するつもりでした。

シャオランを助けてください。言葉を発した後、最も多く表示される文字とその文字が表示される回数を見つけるのを手伝ってください。

説明を入力してください

単語を含む行を入力します。その単語は英小文字のみで構成されます。

すべての評価ケースで、入力語長は 1000 を超えません。

出力の説明

2 行を出力します。最初の行には英語の文字が含まれており、単語内でどの文字が最も多く出現するかを示します。同じ出現数の文字が複数ある場合は、辞書順が最も小さい文字を出力します。

2 行目には、単語内で最も頻繁に出現する文字の出現数を表す整数が含まれています。

入力サンプルと出力サンプル

 

動作限界

  • 最大実行時間: 1秒
  • 最大実行メモリ: 256M

 方法 1:

#include <iostream>
using namespace std;
int main()
{
   string str;
   int i;
   int max=0;
   int a[26]={0};
   cin>>str;
   for(i=0;i<str.length();i++)
   {
     a[str[i]-97]++;
   }
   for(i=0;i<26;i++)
   {
     if(a[i]>a[max])
       max=i;
   }
   cout<<(char)(max+97)<<endl;
   cout<<a[max]<<endl;
  return 0;
}

方法 2:

#include <iostream>
using namespace std;
int main()
{
   int max=0;
   int a[26]={0};
   char c;
   c=getchar();
   while(c!='\n')
   {
     a[c-97]++;
     c=getchar();
   }
   for(int i=0;i<26;i++)
   {
     if(a[i]>a[max])
       max=i;
   }
   cout<<(char)(max+97)<<endl;
   cout<<a[max]<<endl;
  return 0;
}

おすすめ

転載: blog.csdn.net/zyyandzjy2003/article/details/128372911