📅  最后修改于: 2023-12-03 15:12:36.822000             🧑  作者: Mango
在 Gate CS 2018 的问题 10 中,要求编写一个 Python 函数,判断一个给定的字符串是否是回文的。若字符串是回文的,返回 1,否则返回 0。
回文字符串是指正着读和倒着读都一样的字符串,例如 "racecar" 就是一个回文的字符串。因此,判断一个字符串是否是回文的可以先将它反转,然后和原字符串进行比较。如果两者相等,则原字符串是回文的,否则不是回文的。
下面是根据上述逻辑实现的 Python 函数示例代码:
def isPalindrome(s: str) -> int:
# 将字符串转换为小写字母,并去掉空格和标点符号
s = ''.join(filter(str.isalnum, s.lower()))
# 字符串反转
reversed_str = s[::-1]
# 判断是否是回文的字符串
if s == reversed_str:
return 1
else:
return 0
该函数将输入字符串先转换为小写字母,然后通过 filter()
函数过滤掉所有的非字母和数字的字符,最后将其赋值给新的变量 s
。接着,定义了一个变量 reversed_str
,赋值为 s
的反转字符串。最后通过比较 s
和 reversed_str
的值是否相等来判断是否是回文的字符串。如果相等,返回值为 1;否则返回值为 0。
下面是几个测试样例:
assert isPalindrome("A man, a plan, a canal, Panama!") == 1
assert isPalindrome("Was it a car or a cat I saw?") == 1
assert isPalindrome("This is not a palindrome") == 0
这些测试样例对应了一个回文的字符串、另一个回文的字符串,以及一个不是回文的字符串。执行函数后,将返回值与预期结果进行比较,如果相等则说明函数实现正确。