欢迎访问宙启技术站
智能推送

Python编写案例:判断一个字符串是否是回文串

发布时间:2023-12-04 15:27:00

回文串是指正反两个方向读都相同的字符串。例如,"madam"、"racecar"和"level"等都是回文串。

下面是一个用Python编写的判断字符串是否为回文串的案例:

def is_palindrome(s):
    s = s.lower()  # 将字符串全部转换为小写字母
    s = ''.join(e for e in s if e.isalnum())  # 过滤掉非字母和非数字的字符
    return s == s[::-1]  # 判断反转后的字符串与原字符串是否相同

# 测试案例
print(is_palindrome("A man, a plan, a canal, Panama"))  # 输出:True
print(is_palindrome("hello world"))  # 输出:False
print(is_palindrome("123321"))  # 输出:True
print(is_palindrome("102030405060708090807060504030201"))  # 输出:True

以上代码中,is_palindrome函数接收一个字符串参数s,并进行如下操作:

1. 将字符串转换为小写字母,这是因为在判断是否是回文串时不区分大小写。

2. 使用列表推导式将字符串中的非字母和非数字的字符过滤掉。这一步是为了排除字符串中的空格、标点符号等对回文串判断的干扰。

3. 使用切片操作s[::-1]将字符串反转,并与原字符串进行比较,如果相同则返回True,否则返回False。

接下来是测试案例,可以看到:

- 对于一个带有标点符号的回文串"A man, a plan, a canal, Panama",经过处理后,仍然是回文串,因此返回True。

- 对于非回文串"hello world",返回False。

- 对于一个只包含数字的回文串"123321",返回True。

- 对于一个很长的数字回文串"102030405060708090807060504030201",返回True。

这个案例可以应用于很多场景,例如判断一个用户输入的字符串是否是回文字符串,或者验证一个密码是否是回文结构等等。