📅  最后修改于: 2023-12-03 15:23:04.147000             🧑  作者: Mango
这是一道关于字符串操作的算法题,需要判断一个字符串是否是回文字符串。
给定一个字符串,判断该字符串是否是回文字符串。回文字符串就是一个正序或倒序读起来都一样的字符串。只考虑该字符串中的字母和数字字符,忽略字母的大小写。例如,"A man, a plan, a canal: Panama" 是一个回文字符串,因为忽略掉字符串中的空格和其他非字母数字的字符后,得到的字符串仍然是 "amanaplana canalpanama",正序和倒序读起来都是一样的。
输入为一个字符串,长度不超过 1000。
如果该字符串是回文字符串,则输出 "YES",否则输出 "NO"。
A man, a plan, a canal: Panama
YES
下面是 Python 语言的代码实现:
def is_palindrome(s):
s = ''.join(filter(str.isalnum, s)).lower()
return s == s[::-1]
s = input().strip()
if is_palindrome(s):
print('YES')
else:
print('NO')
这段代码中,我们首先定义了一个函数 is_palindrome,其参数为一个字符串 s,返回值为布尔类型。该函数将字符串 s 中的非字母、非数字的字符去掉,同时将所有字母都转换成小写形式,然后通过切片操作反转一下该字符串,最后和原字符串进行比较。如果相等,说明该字符串是回文字符串。
接下来,我们读入用户输入的一个字符串 s,调用 is_palindrome 函数判断该字符串是否是回文字符串,最后输出判断结果。
本题考察了字符串的相关操作,包括去除字符串中的特殊字符,将字符串转换成小写字母等操作,以及字符串的切片操作。在解题过程中,需要仔细读题,注意回文字符串只考虑字母和数字字符。