テキスト反転による回文検出
文字列反転を使用して回文を検出する方法を学びます。回文とは何か、比較のためのテキスト正規化、一般的な回文アルゴリズムを理解しましょう。
Algorithms
詳細な説明
回文とは?
回文は、前から読んでも後ろから読んでも同じになる単語、フレーズ、数字、またはその他の文字のシーケンスです。文字列反転は回文を検出する最も直感的な方法です。
シンプルな回文チェック
function isPalindrome(str) {
const reversed = [...str].reverse().join("");
return str === reversed;
}
一般的な回文
単語: racecar, level, madam, radar, civic, kayak, rotor, noon, deed
フレーズ(スペースと大文字小文字を無視):
- "A man a plan a canal Panama"
- "Was it a car or a cat I saw"
- "Never odd or even"
正規化
フレーズ回文では、比較前にテキストを正規化する必要があります:
function isPalindromePhrase(str) {
const normalized = str.toLowerCase().replace(/[^a-z0-9]/g, "");
const reversed = [...normalized].reverse().join("");
return normalized === reversed;
}
効率的な回文チェック(完全な反転なし)
ツーポインタアプローチはより効率的です:
function isPalindrome(str) {
let left = 0, right = str.length - 1;
while (left < right) {
if (str[left] !== str[right]) return false;
left++;
right--;
}
return true;
}
このアプローチはO(n)時間、O(1)空間で、新しい文字列を作成せずに両端から文字をチェックします。
ユースケース
回文検出はコーディング面接と競技プログラミングの定番です。LeetCode、HackerRank、CodeSignalの問題に登場します。バイオインフォマティクスではDNA配列解析にも使用され、回文配列は制限酵素の認識に役割を果たします。