C#で文字列がすべて一意の文字で構成されているかを判定する方法
C#では、Substring()メソッドを活用することで、文字列内のすべての文字が一意(重複なし)であるかどうかを簡単に判定できます。基本的な考え方は、文字列の長さ分だけループを回しながら、各位置の文字を1文字ずつ取り出し、他の文字と比較していくというものです。
もし一つでも同じ文字が別の位置に存在した場合、その文字列はすべて一意の文字で構成されているとは言えません。逆に、どの文字も重複していなければ、その文字列には一意の文字のみが含まれていると判断できます。
以下のコードを実行して、文字列がすべて一意の文字を持っているかどうかを実際に確認してみましょう。
サンプルコード
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();
}
}実行結果
True
コードの解説
このプログラムでは、外側のforループで文字列の先頭から順に1文字ずつ取り出し(変数one)、内側のforループでもう一度全文字を走査します(変数two)。両者が一致し、かつ位置が異なる場合(i != j)は重複した文字が存在するため、即座にfalseを返します。
サンプルでは文字列「amit」をチェックしており、a・m・i・tの4文字はすべて異なるため、結果としてTrueが出力されます。なお、この手法の計算量はO(n²)となるため、より長い文字列を扱う場合はHashSetなどを利用したO(n)のアプローチを検討すると効率的です。
-
【Python】文字列がすべてユニークな文字で構成されているか判定する方法
本記事では、与えられた文字列に含まれる文字がすべて一意(ユニーク)であるかどうかを判定するPythonプログラムについて、その解法とアプローチをわかりやすく解説します。 問題の概要 文字列が入力として与えられたとき、その文字列に含まれるすべての文字が重複なく一意であるかどうかを判定します。たとえば「abcde」はすべて異なる文字で構成されているためTrue、「tutorialspoint」のように同じ文字が複数回出現する場合はFalseとなります。 アプローチ この問題は、以下のような手順で効率的に解くことができます。 ブール値の配列を用意する: 各インデックス i が「アルファベット(AS
-
Pythonで文字列内のミラー文字を検索する方法【初心者向け解説】
ユーザーが入力した文字列と位置(ポジション)が与えられたとき、その位置から文字列の末尾までの文字を、アルファベット順を反転させた「ミラー文字」に変換するプログラムを作成します。この操作では、「a」→「z」、「b」→「y」、「c」→「x」、「d」→「w」のように、アルファベットの最初の文字が最後の文字に対応する形で置き換えを行います。 入力: p = 3 入力文字列 = python 出力: pygslm 上記の例では、3番目の位置以降の文字「t」「h」「o」「n」が、それぞれ逆順のアルファベット「g」「s」「l」「m」に変換されていることがわかります。先頭から指定位置までは元の文字列