Valid Palindrome

LeetCode

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.
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
l
r
0
a
1
c
2
e
3
4
a
5
6
c
7
a
8
r
r
9
Step 1 / 8
Step 1:
Initialize pointers l=0, r=9 (last index).
Pointers: l=0, r=9
Focus: select @ [0, 9]