📜  门| GATE CS 2018 |问题 10(1)

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

门| GATE CS 2018 |问题 10

在 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 的反转字符串。最后通过比较 sreversed_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

这些测试样例对应了一个回文的字符串、另一个回文的字符串,以及一个不是回文的字符串。执行函数后,将返回值与预期结果进行比较,如果相等则说明函数实现正确。