📌  相关文章
📜  检查给定的字符串是否是回文奇数(1)

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

检查给定的字符串是否是回文奇数

在编写程序时,经常会遇到需要检查一个字符串是否是回文奇数的情况。回文奇数是指正着念和倒着念都一样的数字,且是奇数。比如131、767都是回文奇数,而121、5555不是。

为了解决这个问题,我们可以使用两种方法:一种是将字符串反转后进行比较,另一种是利用双指针从字符串两端向中间比较。这里我们将介绍这两种方法的具体实现。

方法一:使用字符串反转

首先,将字符串反转后和原字符串进行比较。如果相等,再判断字符串长度是否为奇数。如果是奇数,则返回true,否则返回false。示例代码如下:

def is_palindrome(s: str) -> bool:
    return s == s[::-1] and len(s) % 2 == 1

使用示例:

s = "12321"
print(is_palindrome(s))  # True

s = "123456"
print(is_palindrome(s))  # False
方法二:使用双指针

另一种方法是利用双指针,从字符串两端开始向中间比较。当指针相遇时,如果字符串长度为奇数,则返回True,否则返回False。示例代码如下:

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 len(s) % 2 == 1

使用示例:

s = "12321"
print(is_palindrome(s))  # True

s = "123456"
print(is_palindrome(s))  # False

以上两种方法都可以有效地判断一个字符串是否是回文奇数。具体使用哪种方法,可以根据使用场景和性能需求进行选择。