String Palindrome Check in JavaScript
Lowercase, strip junk, reverse. 'A man a plan a canal Panama' should pass.
BeginnerString ProgramsExample 3 of 5
string-palindrome-check.js
1// Method 1: Compare with reversed string2function isPalindrome1(str) {3 str = str.toLowerCase().replace(/[^a-z0-9]/g, '');4 return str === str.split('').reverse().join('');5}67console.log("madam:", isPalindrome1("madam"));8console.log("hello:", isPalindrome1("hello"));9console.log("A man a plan:", isPalindrome1("A man a plan a canal Panama"));1011// Method 2: Two-pointer approach12function isPalindrome2(str) {13 str = str.toLowerCase().replace(/[^a-z0-9]/g, '');14 let left = 0;15 let right = str.length - 1;1617 while (left < right) {18 if (str[left] !== str[right]) {19 return false;20 }21 left++;22 right--;23 }24 return true;25}2627console.log("\nTwo-pointer:");28console.log("racecar:", isPalindrome2("racecar"));29console.log("world:", isPalindrome2("world"));3031// Method 3: Recursive approach32function isPalindrome3(str) {33 str = str.toLowerCase().replace(/[^a-z0-9]/g, '');3435 if (str.length <= 1) return true;36 if (str[0] !== str[str.length - 1]) return false;3738 return isPalindrome3(str.slice(1, -1));39}4041console.log("\nRecursive:");42console.log("level:", isPalindrome3("level"));43console.log("hello:", isPalindrome3("hello"));4445// Method 4: Using every method46function isPalindrome4(str) {47 str = str.toLowerCase().replace(/[^a-z0-9]/g, '');48 return str.split('').every((char, i) => {49 return char === str[str.length - 1 - i];50 });51}5253console.log("\nUsing every:");54console.log("deed:", isPalindrome4("deed"));
Output
madam: true hello: false A man a plan: true Two-pointer: racecar: true world: false Recursive: level: true hello: false Using every: deed: true
What's going on
Compare to its reverse after toLowerCase and dropping non-letters. Skip that and spaces kill it.