Description

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.

Examples

Input:s = "A man, a plan, a canal: Panama"
Output:true
Explanation:

After processing, it becomes 'amanaplanacanalpanama', which is a palindrome.

Input:s = "race a car"
Output:false
Explanation:

After processing, it becomes 'raceacar', which is not a palindrome.

Input:s = " "
Output:true
Explanation:

After removing non-alphanumeric characters, s becomes an empty string which is a palindrome.

Constraints

  • 1 ≤ s.length ≤ 2 × 10⁵
  • s consists only of printable ASCII characters.

Ready to solve this problem?

Practice solo or challenge other developers in a real-time coding battle!