【JavaScript】回文判定のコードを書く
回文とは? | 回文判定方法 | 具体例 | JavaScriptによる実装
回文とは?
回文とは、前から読んでも後ろから読んでも同じ文字列を指します。例えば、「あかさたな」や「racecar」などが回文の例です。回文判定は、文字列の前後を比較することでその性質を確認できます。
回文判定方法
回文判定を行うためには、文字列の左右の文字を比較していきます。具体的には、文字列の最初と最後の文字を比較し、それが一致するかを確認します。もし一致すれば、次に2番目と2番目から逆順に比較し、最終的にすべて一致すれば回文と判断します。
回文判定のアルゴリズムは以下の手順で行います:
- 文字列を正規化する(空白や大文字小文字を無視する場合もあります)。
- 文字列の最初と最後の文字を比較し、異なれば回文でないと判断します。
- 文字列の中央まで比較を繰り返します。
具体例
回文の具体例として、いくつかの文字列を挙げてみましょう。
- 「あかさたな」: 前から読んでも後ろから読んでも同じ文字列であり、回文です。
- 「racecar」: 英語での回文。前から読んでも後ろから読んでも「racecar」です。
- 「hello」: この文字列は回文ではありません。前から読んでも後ろから読んでも一致しません。
- 「madam」: こちらも回文です。前から読んでも後ろから読んでも同じです。
JavaScriptによる実装
では、実際にJavaScriptで回文判定を実装してみましょう。以下に、簡単な回文判定のコード例を示します。
function isPalindrome(str) {
// 文字列を小文字にし、空白を取り除く
const normalizedStr = str.replace(/\s+/g, '').toLowerCase();
// 文字列の前後を比較する
const reversedStr = normalizedStr.split('').reverse().join('');
return normalizedStr === reversedStr;
}
// 例を試してみる
console.log(isPalindrome("あかさたな")); // true
console.log(isPalindrome("racecar")); // true
console.log(isPalindrome("hello")); // false
このコードでは、まず入力文字列から空白を取り除き、小文字に変換しています。次に、文字列を逆順にして元の文字列と比較することで、回文かどうかを判定しています。
コードの説明
str.replace(/\s+/g, '')
: 文字列からすべての空白を取り除きます。toLowerCase()
: 文字列を小文字に変換します。これにより、大文字と小文字の違いを無視できます。split('').reverse().join('')
: 文字列を一文字ずつ分割し、逆順に並べて再び文字列に結合します。normalizedStr === reversedStr
: 正規化された文字列と逆順にした文字列を比較し、回文かどうかを判定します。
上記のコードでは、簡単な回文判定のアルゴリズムを実装しています。さらに、このコードを発展させることで、例えば大文字小文字や空白を無視して判定するなど、柔軟な回文判定が可能になります。