js实现回文
判断字符串是否为回文
回文是指正读和反读都相同的字符串。以下是几种在JavaScript中判断字符串是否为回文的方法。
方法一:使用数组反转
将字符串转换为数组,反转后再合并为字符串与原字符串比较。

function isPalindrome(str) {
const reversed = str.split('').reverse().join('');
return str === reversed;
}
console.log(isPalindrome("madam")); // true
console.log(isPalindrome("hello")); // false
方法二:使用循环比较字符
通过循环逐个比较字符串的首尾字符。
function isPalindrome(str) {
for (let i = 0; i < str.length / 2; i++) {
if (str[i] !== str[str.length - 1 - i]) {
return false;
}
}
return true;
}
console.log(isPalindrome("racecar")); // true
console.log(isPalindrome("world")); // false
方法三:使用递归
递归比较首尾字符,逐步缩小字符串范围。

function isPalindrome(str) {
if (str.length <= 1) return true;
if (str[0] !== str[str.length - 1]) return false;
return isPalindrome(str.slice(1, -1));
}
console.log(isPalindrome("level")); // true
console.log(isPalindrome("test")); // false
方法四:忽略大小写和非字母数字字符
处理包含大小写或特殊字符的字符串时,可以先标准化。
function isPalindrome(str) {
const cleaned = str.toLowerCase().replace(/[^a-z0-9]/g, '');
return cleaned === cleaned.split('').reverse().join('');
}
console.log(isPalindrome("A man, a plan, a canal: Panama")); // true
console.log(isPalindrome("No 'x' in Nixon")); // true
性能优化
对于长字符串,方法二(循环比较)通常性能最优,因为它可以提前终止比较。方法一和方法三可能因反转或递归开销较大。
应用场景
- 方法一适合简单字符串且代码简洁的场景。
- 方法二适合对性能要求较高的场景。
- 方法三适合理解递归概念的练习。
- 方法四适合处理实际输入中的复杂情况。






