Skip to content

Valid Palindrome

LeetCode

01 · Question

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: true
  • Explanation: "amanaplanacanalpanama" is a palindrome.

Example 2:

  • Input: s = "race a car"
  • Output: false
  • Explanation: "raceacar" is not a palindrome.

02 · Solution

Reference solution

1def isPalindrome(s: str) -> bool:
2 l, r = 0, len(s) - 1
3
4 while l < r:
5 while l < r and not s[l].isalnum():
6 l += 1
7 while l < r and not s[r].isalnum():
8 r -= 1
9
10 if s[l].lower() != s[r].lower():
11 return False
12
13 l += 1
14 r -= 1
15
16 return True