A phrase is a palindrome if, after converting all uppercase letters to lowercase and removing all non-alphanumeric characters, it reads the same forward and backward.
Given a string s, return true if it's a valid palindrome, or false otherwise.
For example, "A man, a plan, a canal: Panama" returns true. After cleaning it becomes "amanaplanacanalpanama" which reads the same both ways.
How can you check this without creating a new cleaned string?
Constraints: . Only printable ASCII characters.