Valid Palindrome
Easy
Two Pointers
String
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. 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: After removing non-alphanumeric characters, s is an empty string, which reads the same forward and backward.

Constraints

  • 1 <= s.length <= 2 * 10⁵
  • s consists only of printable ASCII characters.
Time Complexity
O(n)
Space Complexity
O(1)
14
Case 1
Input: "A man, a plan, a canal: Panama"
Expected: true
Case 2
Input: "race a car"
Expected: false
Case 3
Input: " "
Expected: true