C#のSubstringメソッドで文字列がすべて一意の文字を持つか判定する方法
C#では、Substringメソッドを使うことで、文字列の一部分(部分文字列)を取り出すことができます。本記事では、このSubstring()メソッドを活用して、文字列内のすべての文字が一意(重複していない)であるかどうかを判定する方法を解説します。
Substringメソッドによる一意文字チェックの仕組み
基本的な考え方はシンプルです。文字列の長さ分だけループを回し、各位置からSubstring()メソッドで1文字ずつ取り出します。そして、取り出した文字同士を比較していきます。
もし異なる位置にある部分文字列同士が一致した場合、その文字列には重複した文字が含まれていることになります。つまり、すべての文字が一意ではないと判断できます。
実装例
以下のコードは、文字列がすべて一意の文字で構成されているかを判定するサンプルです。Substring()メソッドの実際の使い方を確認してみましょう。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Demo {
public bool CheckUnique(string str) {
string one = "";
string two = "";
for (int i = 0; i < str.Length; i++) {
one = str.Substring(i, 1);
for (int j = 0; j < str.Length; j++) {
two = str.Substring(j, 1);
if ((one == two) && (i != j))
return false;
}
}
return true;
}
static void Main(string[] args) {
Demo d = new Demo();
bool b = d.CheckUnique("amit");
Console.WriteLine(b);
Console.ReadKey();
}
}コードの解説
このプログラムのポイントは以下の通りです。
CheckUniqueメソッド: 引数として受け取った文字列に対し、外側のループ(変数i)と内側のループ(変数j)の二重ループで全文字を比較します。str.Substring(i, 1)により、i番目の位置から1文字を取り出しています。
重複の判定: 取り出した2つの文字が一致し、かつ位置が異なる場合(i != j)、同じ文字が複数存在することになるため、即座にfalseを返します。
実行結果: サンプルでは「amit」という文字列をチェックしています。a・m・i・tはすべて異なる文字なので、結果としてTrueが出力されます。もし「apple」のような重複文字を含む文字列を渡した場合はFalseが返されます。
補足:より効率的な方法について
なお、上記の二重ループ方式は計算量がO(n²)となるため、文字列が長くなると処理に時間がかかります。パフォーマンスを重視する場合は、HashSet<char>を使って既出の文字を記録しながら1回のループで判定する方法(O(n))や、bool型の配列で文字の出現を管理する方法も検討するとよいでしょう。
-
Pythonで最長の回文部分文字列を求める方法|動的計画法による解法を徹底解説
文字列 S が与えられたとき、その中に含まれる最長の回文部分文字列を求める問題を考えてみましょう。ここでは文字列 S の長さは最大 1000 であると仮定します。たとえば、文字列が「BABAC」であれば、最長の回文部分文字列は「BAB」となります。 回文とは、前から読んでも後ろから読んでも同じになる文字列のことです。この問題は動的計画法(DP)を用いることで効率的に解くことができます。 動的計画法による解法の手順 この問題を解くために、以下の手順に従います。 文字列の長さと同じサイズの正方行列(2次元配列)を定義し、すべて False で初期化する 主対角成分を True に設定する。
-
【SQL Server】SUBSTRING関数の使い方を徹底解説!文字列から部分文字列を抽出する方法
本記事では、SQL ServerのSUBSTRING関数を使って、指定した文字列から部分文字列(サブストリング)を抽出する方法について、初心者の方にもわかりやすく解説します。 SUBSTRING関数とは SUBSTRING関数は、入力された文字列の中の任意の位置から、指定した長さの部分文字列を取り出すための関数です。氏名や商品コードなど、文字列の一部だけを取得したい場合に非常に便利な文字列操作関数です。 基本構文 SQL ServerでSUBSTRING関数を使用する際の構文は以下のとおりです。 SUBSTRING(string, start, length) パラメータの説明 str