function isPalindromeRecursive(str) {
const cleanedStr = str.toLowerCase().replace(/[^a-z0-9]/g, '');
if (cleanedStr.length <= 1) {
return true;
}
if (cleanedStr[0] !== cleanedStr[cleanedStr.length - 1]) {
return false;
}
return isPalindromeRecursive(cleanedStr.slice(1, cleanedStr.length - 1));
}
const str = "A man, a plan, a canal, Panama";
console.log(`递归方式:"${str}" 是回文字符串吗? ${isPalindromeRecursive(str)}`);
function isPalindromeIterative(str) {
const cleanedStr = str.toLowerCase().replace(/[^a-z0-9]/g, '');
let left = 0;
let right = cleanedStr.length - 1;
while (left < right) {
if (cleanedStr[left] !== cleanedStr[right]) {
return false;
}
left++;
right--;
}
return true;
}
console.log(`迭代方式:"${str}" 是回文字符串吗? ${isPalindromeIterative(str)}`);