C#で文字列が回文(パリンドローム)かどうかを判定する方法
回文(パリンドローム)とは、前から読んでも後ろから読んでも同じになる文字列のことです。例えば「Level」や「madam」などが代表的な例です。この記事では、C#を使って文字列が回文かどうかを判定する方法を解説します。
回文判定の基本的な流れ
まず、判定対象となる文字列を用意します。
str = "Level";
次に、ToCharArray() メソッドを使って文字列を文字配列に変換します。これにより、各文字に個別にアクセスできるようになります。
char[] ch = str.ToCharArray();
続いて、Array.Reverse() メソッドで配列の要素順を反転させます。
Array.Reverse(ch);
最後に、Equals() メソッドを使って、元の文字列と反転した文字列が一致するかどうかを比較します。StringComparison.OrdinalIgnoreCase を指定することで、大文字と小文字の違いを無視して比較できます。
bool res = str.Equals(rev, StringComparison.OrdinalIgnoreCase);
完全なサンプルコード
以下に、上記の手順をすべて組み合わせた完全なコードを示します。
例
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
string str, rev;
str = "Level";
char[] ch = str.ToCharArray();
Array.Reverse(ch);
rev = new string(ch);
bool res = str.Equals(rev, StringComparison.OrdinalIgnoreCase);
if (res == true) {
Console.WriteLine("String " + str + " is a Palindrome!");
} else {
Console.WriteLine("String " + str + " is not a Palindrome!");
}
Console.Read();
}
}
}実行結果
String Level is a Palindrome!
コードのポイント
- ToCharArray():文字列を char 型の配列に変換します。
- Array.Reverse():配列内の要素の並びを逆順にします。
- new string(ch):反転した文字配列から新しい文字列を生成します。
- Equals() と StringComparison.OrdinalIgnoreCase:大文字・小文字を区別せずに文字列同士を比較します。「Level」と「leveL」のように表記ゆれがあっても回文として正しく判定できます。
この方法はシンプルで理解しやすく、初心者にもおすすめの回文判定手法です。ループを使って先頭と末尾の文字を順番に比較する方法もありますが、Array.Reverse を活用すれば少ないコード量で実装できます。
-
Pythonで文字列が回文かどうかを判定する方法
Pythonで回文判定を行う方法文字列が回文(前から読んでも後ろから読んでも同じになる文字列)であるかどうかを確認するには、Pythonの標準ライブラリに含まれる reversed() 関数を利用するのが便利です。この関数は逆順のイテレータオブジェクトを返し、それを list() でリストに変換することができます。手順1:reversed()で文字列を逆順にするまず、対象となる文字列を reversed() 関数に渡し、結果をリストとして取得します。>>> str1=malayalam >>> l1=list(reversed(str1)) >>
-
Pythonで変数が文字列型(str)かどうかを判定する方法
isinstance()関数を使った文字列型の判定Pythonでは、組み込み関数 isinstance(var, class) を使うことで、変数 var が指定したクラスのインスタンスであるかどうかを簡単に確認できます。変数が文字列型かどうかを判定したい場合も、この関数を使うのが最も一般的で推奨される方法です。Python 2.x の場合Python 2.x では、str(バイト文字列)と unicode の両方の基底クラスとして basestring が定義されています。そのため、basestring を使えば、どちらの文字列型にも対応した判定が可能です。>>> s =