Palindrome Check in JavaScript

Reverse it. If it matches, palindrome. 10 is not. 121 is.

BeginnerLoop ProgramsExample 5 of 6
palindrome-check.js
1// Palindrome: reads same forwards and backwards
2// Examples: 121, "madam", "racecar"
3
4// Method 1: String palindrome
5function isPalindromeString(str) {
6 str = str.toLowerCase().replace(/[^a-z0-9]/g, '');
7 let reversed = str.split('').reverse().join('');
8 return str === reversed;
9}
10
11console.log("madam:", isPalindromeString("madam"));
12console.log("hello:", isPalindromeString("hello"));
13console.log("A man a plan a canal Panama:", isPalindromeString("A man a plan a canal Panama"));
14
15// Method 2: Number palindrome
16function isPalindromeNumber(num) {
17 let original = num;
18 let reversed = 0;
19
20 while (num > 0) {
21 reversed = reversed * 10 + (num % 10);
22 num = Math.floor(num / 10);
23 }
24
25 return original === reversed;
26}
27
28console.log("\nNumber palindrome:");
29console.log("121:", isPalindromeNumber(121));
30console.log("123:", isPalindromeNumber(123));
31console.log("1221:", isPalindromeNumber(1221));
32
33// Method 3: Two-pointer approach (efficient)
34function isPalindromeTwoPointer(str) {
35 str = str.toLowerCase().replace(/[^a-z0-9]/g, '');
36 let left = 0;
37 let right = str.length - 1;
38
39 while (left < right) {
40 if (str[left] !== str[right]) {
41 return false;
42 }
43 left++;
44 right--;
45 }
46 return true;
47}
48
49console.log("\nTwo-pointer approach:");
50console.log("racecar:", isPalindromeTwoPointer("racecar"));
51console.log("hello:", isPalindromeTwoPointer("hello"));
52
53// Method 4: Recursive approach
54function isPalindromeRecursive(str) {
55 str = str.toLowerCase().replace(/[^a-z0-9]/g, '');
56
57 if (str.length <= 1) return true;
58 if (str[0] !== str[str.length - 1]) return false;
59
60 return isPalindromeRecursive(str.slice(1, -1));
61}
62
63console.log("\nRecursive approach:");
64console.log("level:", isPalindromeRecursive("level"));
65console.log("world:", isPalindromeRecursive("world"));

Output

madam: true
hello: false
A man a plan a canal Panama: true

Number palindrome:
121: true
123: false
1221: true

Two-pointer approach:
racecar: true
hello: false

Recursive approach:
level: true
world: false

What's going on

Same reverse as the last page, then ===. Negative numbers: this file says no.

Strings: strip spaces and case first or Racecar fails.