Skip to main content

Valid Palindrome

Problem statement

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: trueExplanation: "amanaplanacanalpanama" is a palindrome.

Example 2:

Input: s = "race a car"Output: falseExplanation: "raceacar" is not a palindrome.

Example 3:

Input: s = " "Output: trueExplanation: 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.

My solution

/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
const str = s.toLowerCase().split("").filter(v => v.match(/[a-z0-9]/)).join("")
let left = 0;
let right = str.length -1;
let count = 0;

console.log("str", str)

while (left <= right && str.charAt(left) === str.charAt(right)) {
console.log(str.charAt(left),str.charAt(right))

if (left === right) {
count = count + 1
} else {
count = count + 2
}

left++;
right--;
}
console.log("count", count, str.length)
return str.length === count
};