C#で文字列から重複する文字を削除する方法(HashSetの活用)
C#では、HashSet<char> を利用することで、文字列に含まれる重複した文字を非常に簡単に取り除くことができます。本記事では、その基本的な考え方と具体的なサンプルコードを紹介します。
重複除去の基本的な考え方
まず、次のような文字列を用意します。
string str = "ppqqrr";
この文字列には「p」「q」「r」がそれぞれ2回ずつ含まれています。ここで、文字列を char 型として HashSet にマッピングします。HashSet は「同じ要素を1つしか保持しない」という特性を持つコレクションのため、この操作だけで重複文字が自動的に除去されます。
var res = new HashSet<char>(str);
サンプルコード
以下に、完全なプログラム例を示します。
using System;
using System.Linq;
using System.Collections.Generic;
namespace Demo {
class Program {
static void Main(string[] args) {
string str = "ppqqrr";
Console.WriteLine("Initial String: "+str);
var res = new HashSet<char>(str);
Console.Write("New String after removing duplicates:");
foreach (char c in res){
Console.Write(c);
}
}
}
}
実行結果
Initial String: ppqqrr New String after removing duplicates:pqr
ポイント解説
new HashSet<char>(str) のように、コンストラクタに文字列を直接渡すだけで、各文字が自動的にセットの要素として登録されます。重複する文字はこの時点で無視されるため、特別な処理を書く必要はありません。
ただし、HashSet は要素の出現順序を保証しない点に注意してください。元の文字列と同じ順序で結果を得たい場合は、LINQ の Distinct() メソッドを使う方法が便利です。
string result = new string(str.Distinct().ToArray());
用途に応じて両者の使い分けを検討するとよいでしょう。
-
【初心者向け】JavaScriptで文字列から隣接する重複文字を削除する方法
問題文字列 str を唯一の引数として受け取る JavaScript 関数を作成します。ここでいう「重複の削除」とは、隣接する2つの同じ文字を選び、それらを取り除く操作を指します。この操作を文字列 str に対して繰り返し実行し、それ以上削除できる箇所がなくなるまで続けます。最終的に、すべての重複削除が完了した後の文字列を関数から返します。たとえば、関数への入力が以下だった場合:const str = kllkmk;出力は次のようになります:const output = mk;出力の解説まず文字列から「ll」を削除して「kkmk」にし、続けて「kk」を削除することで、最終的な文字列「mk」が得
-
AndroidでTextViewの文字列から母音をすべて削除する方法を解説
AndroidアプリでTextViewに表示する文字列から母音を除去する手順 この記事では、Androidアプリにおいて、EditTextに入力された文字列から母音(A・E・I・O・U)をすべて取り除き、結果をTextViewに表示する方法を実例とともに解説します。正規表現を使ったシンプルな実装なので、初心者の方でもすぐに試せる内容です。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトのセットアップを完了させてください。 ステップ2:レイア