Write a function `isPalindrome` that checks if a given string is a palindrome. A palindrome is a word that reads the same backward as forward. Ignore case and non-alphanumeric characters.
Input: isPalindrome("A man, a plan, a canal: Panama")
Output: true
Explanation: All characters form a palindrome when cleaned and lowercased.
Input: isPalindrome("race a car")
Output: false
Explanation: Does not read the same backward.