📜  算法测验|须藤放置[1.7] |问题3(1)

📅  最后修改于: 2023-12-03 15:11:33.454000             🧑  作者: Mango

算法测验|须藤放置[1.7] |问题3

本题要求实现一个函数,判断给定字符串是否是回文字符串。

题目描述

回文字符串的定义:正着读和倒着读一模一样。例如,"level"、"civic"、"racecar" 等都是回文字符串。

现在给定一个字符串,请你编写一个函数,判断该字符串是否是回文字符串。如果是,则返回 true;否则返回 false。

函数签名
def is_palindrome(s: str) -> bool:
    pass
示例
assert is_palindrome("level") == True
assert is_palindrome("civic") == True
assert is_palindrome("racecar") == True
assert is_palindrome("hello") == False
assert is_palindrome("") == True
assert is_palindrome("A man, a plan, a canal: Panama") == True
解题思路

将字符串反转后比较是否一致即可。需要注意的是,需要先忽略字符串中的所有非字母和数字字符,并将字母转为小写后再比较。

代码实现
def is_palindrome(s: str) -> bool:
    # 将字母转为小写,并忽略非字母和数字字符
    s = ''.join(filter(str.isalnum, s.lower()))
    # 反转字符串并比较
    return s == s[::-1]

代码实现其实很简单,重点是要注意处理字符串中的非字母和数字字符。利用 Python 的内置函数 filter()str.isalnum() 可以轻松实现这个功能。