C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】文字列内で最も多く出現する文字(最頻出文字)を取得する方法

文字列の中で最も多く出現している文字(最頻出文字)を取得するには、対象となる文字列の長さ分だけループ処理を行い、各文字の出現回数を数えていきます。

その際、出現回数を記録するための新しい配列を用意し、以下のようにカウントしていきます。

for (int i = 0; i < s.Length; i++)
    a[s[i]]++;
}

上記のコードで使用している主な変数は次のとおりです。

String s = "livelife!";
int[] a = new int[maxCHARS];

ここでmaxCHARSは256として定義されており、ASCII文字の範囲全体をカバーできます。配列のインデックスがそのまま文字コードに対応するため、a[s[i]]++というシンプルな記述だけで各文字の出現回数を数えられるのがポイントです。

続いて、出現回数が2回以上の文字とその回数を画面に表示します。

for (int i = 0; i < maxCHARS; i++)
    if (a[i] > 1) {
        Console.WriteLine("Character " + (char) i);
        Console.WriteLine("Occurrence = " + a[i] + " times");
    }

それでは、完全なコードを見てみましょう。

サンプルコード

using System;

class Program {

    static int maxCHARS = 256;

    static void display(String s, int[] a) {
        for (int i = 0; i < s.Length; i++)
        a[s[i]]++;
    }

    public static void Main() {
        String s = "livelife!";
        int[] a = new int[maxCHARS];
        display(s, a);

        for (int i = 0; i < maxCHARS; i++)
        if (a[i] > 1) {
            Console.WriteLine("Character " + (char) i);
            Console.WriteLine("Occurrence = " + a[i] + " times");
        }
    }
}

実行結果

Character e
Occurrence = 2 times
Character i
Occurrence = 2 times
Character l
Occurrence = 2 times

この例では、文字列「livelife!」の中で「e」「i」「l」がそれぞれ2回出現していることが確認できます。本プログラムは出現回数が同じ文字をすべて表示する仕様になっているため、正確には「最大出現回数を持つすべての文字」を取得しています。特定の1文字だけを取得したい場合は、最大値を保持する変数を用意して各文字の出現回数と比較する処理を追加するとよいでしょう。

  1. Pythonで文字列からn番目の文字を削除する方法

    この記事では、「文字列から指定したインデックス(i番目)の文字を削除して表示する」という問題の解き方を解説します。 問題の概要 与えられた文字列から、指定されたインデックス位置にある1文字を取り除き、その結果を出力します。 Pythonでは文字列のインデックスは必ず0から始まる点に注意してください。たとえば「tutorialspoint」という文字列の場合、各文字とインデックスの対応は以下のようになります。 T u t o r i a l s p o i n t 0 1 2 3 4 5 6 7 8 9 10 11 12 13 それでは、この問題を解くためのPythonスクリプトを見ていきましょ

  2. Pythonで文字列から最大のアルファベット文字を取得する方法

    Pythonでは、組み込み関数 max() を文字列に適用するだけで、文字列の中から最大のアルファベット文字を簡単に取得できます。文字列に max() を使用すると、各文字がUnicodeコードポイントの順序に従って比較され、その中で最も大きな文字が返されます。具体的には、以下のように記述します。 max(stripedzebra) z最初の例では、helloworld に含まれる各文字(h、e、l、o、w、r、d)の中で w が最も大きい文字であるため、結果として w が返されます。同様に、2番目の例では stripedzebra に含まれる文字の中で z が最大となるため、z が出力されま