Use two pointers from both ends, skipping non-alphanumeric characters and comparing case-insensitively.
Move l and r inward while they point to non-alphanumeric characters. Compare lower() of the remaining characters.
A palindrome reads the same forwards/backwards once punctuation and case differences are ignored.
Use two pointers from both ends, skipping non-alphanumeric characters and comparing case-insensitively.
Move l and r inward while they point to non-alphanumeric characters. Compare lower() of the remaining characters.
A palindrome reads the same forwards/backwards once punctuation and case differences are ignored.