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
该方法尽管使用了递归,但效率相对低下。同时,对于极长的字符串,可能会出现栈溢出的问题。
综上,在实现回文判断函数时,应根据实际需求选择适合的方法。
