Write a Python function to check if a string is a palindrome.
Posted by NickCrt
Last Updated: August 18, 2024
## Checking for Palindrome in Python A palindrome is a string that reads the same forwards and backwards, such as "racecar" or "madam". To determine whether a given string is a palindrome, we can implement a straightforward function in Python. Below is a simple yet effective solution to accomplish this task.
Function Implementation
def is_palindrome(s: str) -> bool:
    # Normalize the string by converting it to lowercase
    # and removing non-alphanumeric characters
    normalized_str = ''.join(char.lower() for char in s if char.isalnum())
    
    # Check if the normalized string is equal to its reverse
    return normalized_str == normalized_str[::-1]
Explanation of the Code
1. Normalization: The function first normalizes the input string by converting it to lowercase and filtering out any non-alphanumeric characters. This step ensures that the palindrome check is case-insensitive and ignores spaces and punctuation. 2. Reversal Check: The normalized string is then compared to its reverse (achieved using slicing [::-1]). If both are identical, the function returns True, indicating that the string is a palindrome. Otherwise, it returns False.
Example Usage
Here are a few examples demonstrating how to use the is_palindrome function:
print(is_palindrome("A man, a plan, a canal: Panama"))  # Output: True
print(is_palindrome("racecar"))                          # Output: True
print(is_palindrome("hello"))                            # Output: False
print(is_palindrome("No 'x' in Nixon"))                 # Output: True
Conclusion
This function provides an efficient way to check whether any given string is a palindrome. By normalizing the string, it effectively handles various input cases, making it versatile for broader usage.