js实现回文
实现回文检测的几种方法
方法1:使用字符串反转
将字符串反转后与原字符串比较,若相同则为回文。

function isPalindrome(str) {
const reversedStr = str.split('').reverse().join('');
return str === reversedStr;
}
方法2:使用双指针
从字符串两端向中间遍历,逐个比较字符是否相同。

function isPalindrome(str) {
let left = 0;
let right = str.length - 1;
while (left < right) {
if (str[left] !== str[right]) return false;
left++;
right--;
}
return true;
}
方法3:递归实现
通过递归方式比较首尾字符,逐步缩小比较范围。
function isPalindrome(str, left = 0, right = str.length - 1) {
if (left >= right) return true;
if (str[left] !== str[right]) return false;
return isPalindrome(str, left + 1, right - 1);
}
方法4:使用数组方法
利用数组的every方法逐一比较字符。
function isPalindrome(str) {
return str.split('').every((char, i) => {
return char === str[str.length - i - 1];
});
}
注意事项
- 上述方法默认区分大小写,如需忽略大小写,可先统一转换为小写:
str = str.toLowerCase(); - 若需忽略标点符号和空格,可使用正则表达式过滤:
str = str.replace(/[^a-zA-Z0-9]/g, '');
性能比较
- 方法1和方法4会创建新字符串或数组,内存开销较大。
- 方法2和方法3无需额外存储空间,更适合处理长字符串。
- 递归实现(方法3)可能存在调用栈溢出风险,超长字符串建议用迭代方法。






