- Palindrome Checker
```javascript
// 解法1
function palindrome(str) {
let chars = str.replace(/[^A-Za-z0-9]/g, ‘’)
.toLowerCase()
let start = 0;
let end = chars.length - 1;
while(start < end) {
if (chars[start] !== chars[end]) {
return false;
}
start++;
end—;
}
return true; }
palindrome(“A man, a plan, a canal. Panama”);
// 解法2 function palindrome(str) { return str.replace(/[\W]/g, ‘’).toLowerCase() === str.replace(/[\W]/g, ‘’). toLowerCase().split(‘’).reverse().join(‘’) }
palindrome(“A man, a plan, a canal. Panama”);
// 解法3 function palindrome(str) { let chars = str.replace(/[\W_]/g, ‘’).toLowerCase() for(let i = 0, len = chars.length - 1; i < len / 2; i++) { if (chars[i] !== chars[len - i]) { return false; } } return true }
palindrome(“A man, a plan, a canal. Panama”);
// 解法4 function palindrome(str) { let front = 0; let back = str.length - 1; while(front < back) { if (/[\W_]/.test(str[front])) { front++ continue }
if (/[\W_]/.test(str[back])) {back--;continue}if (str[front].toLowerCase() !== str[back].toLowerCase()){return false;}front++;back--;
} return true }
palindrome(“A man, a plan, a canal. Panama”); ```
