欢迎访问宙启技术站
智能推送

Python函数实现回文判断

发布时间:2023-06-14 04:24:19

回文是指一个字符串从前往后读和从后往前读是一样的,如“level”、“racecar”、“step on no pets”等等。在编程中,判断一个字符串是否是回文是一个经典问题。

Python中可以很方便地实现回文判断的函数,下面介绍几种常用的方法。

种方法:比较正反两个字符串是否相等

该方法是最直接的思路,即将原字符串翻转后与原字符串进行比较,看是否相等。

代码如下:

def is_palindrome(str):
    return str == str[::-1]

其中,str[::-1]表示将str倒序翻转。

使用该方法的一个例子:

print(is_palindrome("level"))   # True
print(is_palindrome("racecar"))   # True
print(is_palindrome("python"))   # False

该方法运行效率较高,但需要额外的存储空间。

第二种方法:使用两个指针从首尾同时遍历

该方法不需要额外的存储空间,但需要维护两个指针同时从字符串的首尾开始向中间遍历。

代码如下:

def is_palindrome(str):
    i = 0
    j = len(str) - 1
    while i < j:
        if str[i] != str[j]:
            return False
        i += 1
        j -= 1
    return True

使用该方法的一个例子:

print(is_palindrome("level"))   # True
print(is_palindrome("racecar"))   # True
print(is_palindrome("python"))   # False

该方法效率较高,但需要维护两个指针的位置。

第三种方法:使用递归

该方法使用递归的思路,将字符串分为前后两部分,逐步缩小范围进行回文判断。

代码如下:

def is_palindrome(str):
    if len(str) <= 1:
        return True
    else:
        return str[0] == str[-1] and is_palindrome(str[1:-1])

使用该方法的一个例子:

print(is_palindrome("level"))   # True
print(is_palindrome("racecar"))   # True
print(is_palindrome("python"))   # False

该方法尽管使用了递归,但效率相对低下。同时,对于极长的字符串,可能会出现栈溢出的问题。

综上,在实现回文判断函数时,应根据实际需求选择适合的方法。