Problem: Valid Palindrome
Return true if a string is a palindrome after converting uppercase letters to lowercase and removing non-alphanumeric characters.
Hidden answer: strategy, invariant, mistakes, tests
Use two pointers. Invariant: all cleaned characters outside the active left/right range have already matched. Mistake to avoid: building complicated filtered state before asking whether extra memory is acceptable. Test empty after filtering, one character, mixed punctuation, mixed case, and a mismatch at the end.