A text-processing component in the Cox Communications app needs to determine whether a user-entered phrase can be rearranged into a palindrome. Implement a function that performs this check without generating the possible permutations.
A string is a palindrome permutation if its characters can be reordered to read the same forward and backward. Treat uppercase and lowercase letters as equal, and ignore spaces and non-alphanumeric characters.
Given a string s, return True if its normalized characters can be rearranged into a palindrome. Return False otherwise. The input and output types are str and bool.
A normalized string can form a palindrome when at most one character has an odd frequency. This is because every other character must occupy matching positions on opposite sides of the palindrome.
def is_palindrome_permutation(s):