C#で文字列内の重複する文字を出力する方法【出現回数のカウントも解説】
C#では、各文字の出現回数を配列でカウントすることで、文字列内に重複して含まれる文字を簡単に検出できます。ここでは、その基本的な実装手順をわかりやすく解説します。
実装の手順
1. char型の最大値を設定する
まず、文字コードの範囲をカバーできるよう、char型の最大値(256)を静的変数として定義します。この値を配列のサイズとして使い、各文字の出現回数を格納します。
static int maxCHARS = 256;
2. 重複する文字を表示する
次に、対象となる文字列を用意し、各文字の出現頻度を計算した後、出現回数が2回以上の文字だけをコンソールに出力します。
String s = "Welcometomywebsite!";
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");
}
上記のコードでは、calculateメソッドを使って文字列中の各文字の出現頻度を集計しています。その後、配列calを走査し、値が1より大きい要素(=重複している文字)のみを出力する仕組みです。
完全なサンプルコード
これまでの手順をまとめた、動作する完全なプログラムは以下の通りです。
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 = "Welcometomywebsite!";
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");
}
}
}
実行結果
このプログラムを実行すると、文字列「Welcometomywebsite!」の中で重複している以下の文字と、それぞれの出現回数が出力されます。
Character e Occurrence = 4 times Character m Occurrence = 2 times Character o Occurrence = 2 times Character t Occurrence = 2 times Character w Occurrence = 2 times
処理のポイント
- 計算量: 文字列の長さをNとすると、頻度の集計はO(N)、出力判定は最大256回のループで済むため、非常に効率的なアルゴリズムです。
- 大文字・小文字の区別: 配列のインデックスには文字コードがそのまま使われるため、「W」と「w」は別々の文字としてカウントされます。区別せずに扱いたい場合は、事前にToLower()やToUpper()で文字列を正規化してください。
- マルチバイト文字への対応: この手法はASCII文字(0〜255)を前提としています。ひらがなや漢字などUnicode文字全般を扱う場合は、Dictionary<char, int> を使って頻度を管理する方法がおすすめです。
-
JavaScriptでコンソールにUnicode文字を出力する方法
JavaScriptでコンソールにUnicode文字を出力する方法Unicodeには13万種類以上の文字が収録されています。JavaScriptでコンソールにUnicode文字を正しく出力するには、HTMLの<head>タグ内に<meta>タグを配置し、文字コード(charset)としてUTF-8を指定します。<meta charset=UTF-8>外部スクリプトファイルを読み込む場合外部のJavaScriptファイルを使用している場合は、<script>タグにcharset属性を追加することで、そのファイル内のUnicode文字も正しく扱えるよ
-
JavaScriptでページを印刷するにはどうすればよいですか?
JavaScriptでページを印刷するには、print()メソッドを使用します。このメソッドを呼び出すと、ブラウザの標準的な印刷ダイアログボックスが開き、どのプリンターを使用するか、部数はいくつにするかといった印刷オプションを簡単に設定できます。以下は、実際に印刷ダイアログが表示された様子の例です。サンプルコード次のコードを実行すると、ボタンをクリックするだけでページを印刷できる動作を確認できます。<!DOCTYPE html> <html> <body> &nb