JavaScript Program to Check if a String is a Palindrome

Introduction

A palindrome is a word, phrase, or sequence of characters that reads the same backward as forward, ignoring spaces, punctuation, and capitalization. Common examples of palindromes include "madam", "racecar", and "121". This program will help you check whether a given string is a palindrome using JavaScript.

Problem Statement

Create a JavaScript program that:

  • Accepts a string.
  • Checks if the string is a palindrome.
  • Returns true if the string is a palindrome and false otherwise.

Example:

  • Input: "madam"

  • Output: madam is a palindrome

  • Input: "hello"

  • Output: hello is not a palindrome

Solution Steps

  1. Read the Input String: Provide the string either as user input or directly in the code.
  2. Normalize the String: Convert the string to lowercase and remove non-alphanumeric characters for accurate palindrome checks.
  3. Check if the String is a Palindrome: Reverse the string and compare it with the original normalized string.
  4. Display the Result: Print whether the string is a palindrome or not.

JavaScript Program

// JavaScript Program to Check if a String is a Palindrome
// Author: https://www.javaguides.net/

function isPalindrome(str) {
    // Step 1: Normalize the string (convert to lowercase and remove non-alphanumeric characters)
    let normalizedStr = str.toLowerCase().replace(/[^a-z0-9]/g, '');

    // Step 2: Reverse the string
    let reversedStr = normalizedStr.split('').reverse().join('');

    // Step 3: Check if the original string and reversed string are the same
    return normalizedStr === reversedStr;
}

// Example input
let inputString = "madam";
if (isPalindrome(inputString)) {
    console.log(`${inputString} is a palindrome`);
} else {
    console.log(`${inputString} is not a palindrome`);
}

Output

madam is a palindrome

Example with Different Input

let inputString = "hello";
if (isPalindrome(inputString)) {
    console.log(`${inputString} is a palindrome`);
} else {
    console.log(`${inputString} is not a palindrome`);

Output:

hello is not a palindrome

Explanation

Step 1: Normalize the String

  • Convert the string to lowercase using toLowerCase() and remove any non-alphanumeric characters (spaces, punctuation, etc.) using a regular expression (replace(/[^a-z0-9]/g, '')). This ensures accurate comparison.

Step 2: Reverse the String

  • Use split('') to convert the string into an array of characters, reverse the array using reverse(), and then join the characters back into a string using join('').

Step 3: Compare the Original and Reversed String

  • Compare the normalized string with its reversed version. If they are equal, the string is a palindrome.

Step 4: Display the Result

  • If the string is a palindrome, print the result accordingly using console.log().

Conclusion

This JavaScript program checks whether a given string is a palindrome by normalizing the string, reversing it, and comparing the two versions. Palindrome checking is a common task in many programming problems, and this approach ensures that the string is correctly compared, even when it contains non-alphanumeric characters.

Comments