125. Valid Palindrome using JavaScript

0

Table of Contents

Problem

A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.

Given a string s, return true if it is a palindrome, or false otherwise.

Example 1:Input: s = “A man, a plan, a canal: Panama” Output: true Explanation: “amanaplanacanalpanama” is a palindrome.

Example 2:Input: s = “race a car” Output: false Explanation: “raceacar” is not a palindrome.

Example 3:Input: s = ” ” Output: true Explanation: s is an empty string “” after removing non-alphanumeric characters. Since an empty string reads the same forward and backward, it is a palindrome.

Constraints:

  • 1 <= s.length <= 2 * 105
  • s consists only of printable ASCII characters.

Solution

First attempt : (Can be optimized further)

/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
    s = s.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
    if(s.length < 2){
        return true;
    }
    
    for(let i = 0; i<s.length; i++){
        let y = s.length -1 - i;
        if(i >= y){
            break;
        }
        else if(s[i] != s[y]){
            return false;
        }
    }
    return true;
};

Leave a Comment

Skip to content