Mental Model
Use two pointers starting from both ends of the string and move towards the center, comparing characters while skipping non-alphanumeric ones.
Analogy: Imagine two friends starting at opposite ends of a hallway, checking if the tiles they step on match, ignoring broken tiles, and meeting in the middle.
s = "A man, a plan, a canal: Panama"
Indexes: 0 29
↑ ↑
left right
Characters compared: s[left] and s[right]