bugfix> for-loop > 投稿

Javaを使い始めたばかりで、ネストされたforループを(配列を使用せずに)作成しようとしています。私の文字列が「テスト」の場合、26文字のうち3文字しか文字列に含まれていないため、答えとして「23文字」が表示されます。しかし、私のプログラムには情報がありません。私が探している特定の周波数をプログラムがターゲットにできるようにしようとしています。 0。

これまでの私のプログラムは次のとおりです。

public class FindMaxandMinofString {
public static void main(String[] args) {         
char charToLookFor;
String s = "test";
int count = 0;
for (charToLookFor = 'a'; charToLookFor = 'z' ;charToLookFor++)
{
    for(int l = 0; l < s.length(); l++) {
        if(s.charAt(l) == charToLookFor)
        count++;
}
System.out.print(count);

}

回答 2 件
  • 0のカウントをカウントする代わりに、26のカウントから開始し、新しい文字を見つけるたびにカウントから減算します。 break へのインポートです  そうでない場合は、ループから各文字を複数回カウントできます。

    public class FindMaxandMinofString {
        public static void main(String[] args) {         
            char charToLookFor;
            String s = "test";
            int count = 26;
            for (charToLookFor = 'a'; charToLookFor <= 'z' ;charToLookFor++)
            {
                for(int l = 0; l < s.length(); l++)
                {
                    if(s.charAt(l) == charToLookFor)
                    {
                        count--;
                        break;
                    }
                }
            }
            System.out.print(count + " letters");
        }
    }
    
    

  • ハッシュセットを使用してこのタスクを実行できます。文字が見つかったら、それをハッシュセットに追加します。答えは、26から文字列全体を反復処理した後の最終ハッシュセットのサイズを差し引いたものになります。

あなたの答え