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.toLowerCase().replace(/[^a-z0-9]/g, '');
return cleaned === cleaned.split('').reverse().join('');
}
注意事项
- 处理大小写问题时可统一转换为小写
- 处理标点符号和空格时需先清理字符串
- 时间复杂度最优解是O(n),空间复杂度最优是O(1)







