回文チェッカー

回文とは、前から読んでも後ろから読んでも同じになる文字列のことです。「Madam」は容易に認識できますが、「A man, a plan, a canal: Panama」という文字列は、句読点やスペースを無視する必要があるため、識別に少し時間がかかります。このツールは貼り付けた内容を小文字化し、スペースおよび句読点を削除することで標準化処理を行い、結果が本当に回文であるかを確認するとともに、逆順の文字列を並べて表示します。

チェックの実行方法

  1. 1

    テキストまたは数値を貼り付けます

    単語、フレーズ、長い文、または数値文字列。

  2. 2

    正規化が適用されました

    文字は小文字に変換され、文字でも数字でもないもの(スペース、句読点、記号)はすべて削除されます。すべての Unicode 文字はそのまま保持されるため、アクセントは区別され、非ラテン文字(日本語を含む)も扱えます。

  3. 3

    前向きと後方向きを比較します

    正規化された文字列がその逆順と一致する場合、それは回文です。

  4. 4

    結果を確認してください

    このツールは、検証のため、原始文字列および正規化された文字列(逆順)の両方を表示します。

クラシックなパリンドロームの例

テキスト タイプ
madam 単語
level 単語
racecar 単語
A man, a plan, a canal: Panama フレーズ
Was it a car or a cat I saw? 質問
Never odd or even フレーズ
12321 数字
Mr. Owl ate my metal worm 長い文
たけやぶやけた 日本語の回文

回文のカテゴリ

  • 文字パリンドローム。 デフォルト値は、スペースを無視して前後同じ文字が並ぶ形式です。
  • ワードパリンドローム。「I did, did I」、各語が単位として対称的に配置されている。
  • セモルディナプス(Semordnilaps):順を逆転すると異なる語となる語:「stressed」→「desserts」。
  • 数値パリンドローム。 両方向で同じ文字列となる任意の数字列:1991、1881。
  • ゲノム内のパリンドローム。 両鎖において同一の配列が現れるDNA領域であり(制限酵素と関連している)。

チェックのプログラミング

疑似コードにおける核心的な論理は以下の通りです:

function isPalindrome(s):
    normalized = lowercase(s)
    normalized = removeAll(normalized, /[^\p{L}\p{N}]/u)   // 文字と数字を保持、どの文字体系でも
    return normalized == reverse(normalized)

これは標準的なインタビュー用ウォームアップ質問です。変形版では、エッジケースを追加しています:Unicodeの結合記号を無視する、空文字列を処理する、絵文字をサポートする、グラフェムクラスターを考慮するなどです。

このルールの一般的な変形例

  • **厳密モード:**スペースや句読点を含むすべての文字をカウントします。"aba"は合格;"a man a plan"は不合格です。
  • アルファベット・数字のみ: 他のすべてを削除します。ほとんどのカジュアルな回文チェックでこの方式が使われます。
  • Unicode 正規化: 一部のツールは比較前にアクセント付き文字を統合(NFKD)し、「café」を「éfac」と一致させます。

このツールはアルファベットと数字のみの方式を使います。小文字に変換し、すべての Unicode 文字と数字(日本語を含むあらゆる文字)を保持し、それ以外を削除します。アクセントは統合しないため、アクセント付き文字は同じ文字と正確に一致する必要があります。「厳格モード」ボタンはありません。

よくある質問

はい。1文字はどれも自明に回文です。逆順にしても自分自身と同じだからです。多くの教育的な定義では、興味深いものとするには少なくとも3文字が必要だとされますが、数学的な定義では長さ1、さらには長さ0(空文字列)も回文として認めます。

これらを数字列として扱ってください。121、12321および1991は数値パリンドロームです。大きな整数については文字列表現を確認してください。数値を算術的に逆転させると先頭のゼロが失われてしまうため、そのようにすることは避けてください。

英語における重要な作品の一つに、「A Man, a Plan, a Canal: Panama」およびその数多くの拡張形がある。ピーター・ノルヴィグがコンピュータで生成したパリンドロームは17,000語以上にも及びるが、いずれも文法的に正しいものではない。ギネス世界記録に登録されている英語の単語によるパリンドロームの中で最も長いものは「tattarrattat」(『ユリッセス』)である。

はい、すべての言語においてそうです。フィンランド語の「saippuakivikauppias」(石鹸石販売業者、19文字)は、あらゆる言語において最も長い自然に生じる単語回文としてよく挙げられています。

関連ツール

このツールは他の言語でも利用できます