白駿Baekjoon 1371号で一番多い字-JAVA


https://www.acmicpc.net/problem/1371
質問する
英語の中には他の字よりたくさん使う字がある.例えば、長文では、約12.31%の字がeである.
ある文章が現れたら、最も多くの文字を出力するプログラムを作成してください.
入力
最初の行から文章の文を与えます.記事は最大50行で構成され、各行は最大50文字で構成されています.行ごとにスペースと小文字しかありません.文には少なくとも1つのアルファベットがあります.
しゅつりょく
最初の行に最も多くの文字を出力します.複数の場合、アルファベット順にリードしてからすべて空白のない出力になります.
入力例1
english is a west germanic
language originating in england
and is the first language for
most people in the united
kingdom the united states
canada australia new zealand
ireland and the anglophone
caribbean it is used
extensively as a second
language and as an official
language throughout the world
especially in common wealth
countries and in many
international organizations
サンプル出力1
a
入力例2
baekjoon online judge
サンプル出力2
eno
入力例3
abc a
サンプル出力3
a
入力例4
abc
ab
サンプル出力4
ab
入力例5
amanda forsaken bloomer meditated gauging knolls
betas neurons integrative expender commonalities
latins antidotes crutched bandwidths begetting
prompting dog association athenians christian ires
pompousness percolating figured bagatelles bursted
ninth boyfriends longingly muddlers prudence puns
groove deliberators charter collectively yorks
daringly antithesis inaptness aerosol carolinas
payoffs chumps chirps gentler inexpressive morales
サンプル出力5
e
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] alphabet = new int[26];
 
        while (scan.hasNextInt()) {
            String str = scan.nextLine();
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) >= 'a' && str.charAt(i) <= 'z') {
                    alphabet[str.charAt(i) - 'a']++;
                }
            }
        }
 
        int max = 0;
        for (int i = 0; i < 26; i++) {
            if (max < alphabet[i]) {
                max = alphabet[i];
            }
        }
 
        for (int i = 0; i < 26; i++) {
            if (max == alphabet[i]) {
                System.out.print((char) (i + 'a'));
            }
        }
    }
}
  • 説明
    hasNextLine()を使用して
  • 文字列の末尾を判断したが、無限ループが現れた...内部時間...
  • NextLine()メソッドは、Enterのみを検出し、Enter以前のすべての入力を受け入れる.
  • hasNextLine()メソッドbooleanを使用して次の行に入力があるかどうかを判断し、入力がある場合はTrue、ある場合はFalseに戻る
    これをclase()に閉じないと、無限ループに陥る可能性があります.
  • 興味深い点は、Askiコード値演算を用いて、配列順序自体をアルファベット順とし、そのAskiコード値のときにその配列に入ることである.
    つまり、
  • が制定された.最初にHashMapを使用して各配列に値を割り当て、次にcontainsKeyを使用して値を比較します.たとえば、アルファベット
  • は、地図を書いて順序を決める必要はないことを学んだ.