js回文算法实现
回文算法实现方法
方法一:使用字符串反转 将字符串反转后与原字符串比较,若相同则为回文。
function isPalindrome(str) {
const reversedStr = str.split('').reverse().join('');
return str === reversedStr;
}
方法二:双指针法 使用两个指针从字符串两端向中间移动,逐个比较字符。

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;
}
方法三:递归实现 递归比较首尾字符,逐步缩小检查范围。
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);
}
方法四:忽略大小写和非字母数字 处理包含特殊字符或大小写混合的字符串。

function isPalindrome(str) {
const cleaned = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
return cleaned === cleaned.split('').reverse().join('');
}
方法五:使用数组方法 通过数组的every方法逐个比较字符。
function isPalindrome(str) {
return str.split('').every((char, i) => {
return char === str[str.length - i - 1];
});
}
注意事项
- 时间复杂度:方法一、四、五为O(n),方法二、三为O(n/2)
- 空间复杂度:方法一、四、五需要额外存储空间,方法二、三为O(1)
- 根据需求选择是否区分大小写和过滤非字母数字字符






