# 125. Valid Palindrome (https://leetcode.com/problems/valid-palindrome/description/)
 
Фраза является **палиндромом**, если после приведения всех заглавных букв к строчным и удаления всех не буквенно-цифровых символов она читается одинаково слева направо и справа налево. Буквенно-цифровые символы включают буквы и цифры.
 
Дана строка `s`, верните `true` _если это **палиндром**, или_ `false` _в противном случае_.
function isPalindrome(s: string): boolean {
  const lc = s.toLocaleLowerCase().replace(/[^a-zA-Z\d]/g, "")
  return lc === lc.split("").reverse().join("")
}
 
/**
 * without reverse
 */
// function isPalindrome(s: string): boolean {
//   const lc = s.toLowerCase().replace(/[^a-z0-9]/g, "");
//   let i = 0,
//     j = lc.length - 1;
//   while (i < j) {
//     if (lc[i] !== lc[j]) return false;
//     i++;
//     j--;
//   }
//   return true;
// }
 
// Local check:
console.log(isPalindrome("A man, a plan, a canal: Panama"))
console.log(isPalindrome("race a car"))
console.log(isPalindrome(" "))
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.

easy RegExp cheatsheet та же задача через two pointers