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

【C#入門】文字列内で最も頻出する文字を見つけるプログラムの書き方

C#では、文字列の中にどの文字が何回出現するかを集計することで、最も頻出する文字を簡単に特定できます。本記事では、配列を使って各文字の出現回数をカウントし、複数回出現した文字を出力するプログラムを解説します。

処理の流れ

まず、対象となる文字列を用意します。ここでは例として次の文字列を使用します。

String s = "HeathLedger!";

次に、ASCII文字コード(256種類)の出現回数を記録するためのint型配列を作成します。

int[] cal = new int[maxCHARS];

続いて、文字列と配列を受け取るメソッドを作成します。このメソッドは、文字列を1文字ずつ走査し、該当する文字コードのインデックスに対応する配列要素をインクリメントすることで出現回数を数えます。

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

サンプルコード全体

以下が、上記の手順をすべて組み合わせた完全なプログラムです。

Example

using System;
class Demo {
    static int maxCHARS = 256;
    static void calculate(String s, int[] cal) {
        for (int i = 0; i < s.Length; i++)
        cal[s[i]]++;
    }

    public static void Main() {
        String s = "thisisit!";
        int []cal = new int[maxCHARS];
        calculate(s, cal);
        for (int i = 0; i < maxCHARS; i++)
        if(cal[i] > 1) {
            Console.WriteLine("Character "+(char)i);
            Console.WriteLine("Occurrence = " + cal[i] + " times");
        }
    }
}

このプログラムでは、文字列「thisisit!」を解析しています。Mainメソッド内でcalculateメソッドを呼び出して出現回数を集計した後、カウントが2以上の文字だけをコンソールに出力します。

実行結果

Character i
Occurrence = 3 times
Character s
Occurrence = 2 times
Character t
Occurrence = 2 times

コードのポイント

  • 計算量: 文字列の長さをNとすると、時間計算量はO(N)と非常に効率的です。
  • 仕組み: char型は内部的には数値として扱われるため、cal[s[i]]のように文字をそのまま配列のインデックスとして利用できます。
  • 応用: if文の条件を変更すれば、最も多く出現した文字だけを抜き出すことも可能です。

この手法は、文字種が限られたASCII文字の解析に適しており、シンプルながら実用的な文字列処理の基本テクニックです。

  1. Pythonのリストから最頻出要素(最も多く出現する要素)を取得する3つの方法

    この記事では、Pythonのリストの中で最も多く出現する要素(最高頻度の要素)を見つける方法を解説します。リストからユニークな要素を取り出して出現回数を数え、最も頻度の高い要素を特定するという流れになります。ここでは代表的な3つのアプローチを紹介します。 方法1:max()とcount()を組み合わせる まずset()関数を使ってリストから重複のないユニークな要素を取得し、それぞれの要素が元のリストに何回登場するかをcount()で数えます。その上でmax()関数にkey引数を指定することで、出現回数が最大となる要素を取得できます。 サンプルコード # 対象のリスト listA = [45,

  2. Pythonで配列内の最大の要素を見つける方法を解説

    この記事では、「配列の中から最大の要素を求める」という問題の解決方法について詳しく解説します。 問題の概要 問題文:与えられた配列に対して、その中で最も大きい要素を計算して求める必要があります。 ここではブルートフォース(総当たり)アプローチを使用します。これは、配列全体を先頭から順番に走査しながら各要素を比較し、その時点での最大値を更新していくというシンプルかつ確実な手法です。 実装例 以下に具体的なコードを示します。 # 最大値を求める関数 def largest(arr, n): # 最大要素の初期値として最初の要素を設定 max = arr[0] # 配列全体を