📜  门|门 IT 2008 |问题 17(1)

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

门|门 IT 2008 |问题 17

在这个问题中,我们需要编写一个函数来判断一个字符串是否为回文字符串。回文字符串是指正着读和倒着读都相同的字符串,比如 "level" 就是一个回文字符串。

输入

一个字符串。

输出

如果输入的字符串是回文字符串,返回 True,否则返回 False。

实现思路

从前往后读和从后往前读都相同的字符串,可以考虑使用双指针来解决。定义两个指针,一个指向字符串的头部,一个指向字符串的尾部,每次判断它们所指向的字符是否相同。如果有不同的字符,说明这个字符串不是回文字符串,返回 False;如果两个指针相遇了,说明这个字符串是回文字符串,返回 True。

代码实现

下面是一个 Python 实现:

def is_palindrome(s: str) -> bool:
    # 定义双指针
    left, right = 0, len(s) - 1
    # 循环判断字符是否相同
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    return True
测试样例

下面是一些测试样例:

assert is_palindrome("level") == True
assert is_palindrome("hello") == False
assert is_palindrome("A man a plan a canal Panama") == True