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 * 105sconsists 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
};