Python函数-如何判断一个字符串是否为回文
回文是指正着念和反着念都是一样的字符串,它是一种非常常见的字符串特征。判断一个字符串是否为回文有很多种方法,本文将介绍两种基本方法以及Python的函数实现。
方法一: 双指针法
思路:将字符串首尾两端的字符依次比较,如果相同则继续比较,直到中间位置或者发现不相等的字符。
详细步骤:
1. 定义两个指针i和j,分别指向字符串的首尾字符;
2. 比较字符串i和j位置的字符是否相等;
3. 如果相等,则i向右移动一位,j向左移动一位,继续执行步骤2;
4. 如果不相等,则字符串不是回文,直接返回False;
5. 当i>=j时,说明字符串是回文,返回True。
代码实现:
def is_palindrome(s:str) -> bool:
i,j = 0, len(s)-1
while i<j:
if s[i]!=s[j]:
return False
i,j = i+1, j-1
return True
调用:
s = 'racecar'
print(is_palindrome(s)) # True
方法二:递归法
思路:将字符串拆分为两个字符,分别比较两个字符是否相等,如果相等则继续往下递归,直到字符串的长度小于或等于1。
详细步骤:
1. 定义递归函数,接收字符串s和左右两端的指针l和r;
2. 当l>=r时,说明字符串比较完毕,返回True;
3. 如果s[l]=s[r],则继续比较s[l+1]和s[r-1];
4. 如果s[l]!=s[r],说明字符串不是回文,返回False。
代码实现:
def is_palindrome(s: str) -> bool:
def helper(l:int, r:int) -> bool:
if l>=r:
return True
if s[l]==s[r]:
return helper(l+1, r-1)
else:
return False
return helper(0, len(s)-1)
调用:
s = 'racecar'
print(is_palindrome(s)) # True
Python自带的函数
Python中提供了一个非常简单的方法判断一个字符串是否为回文,即使用字符串反转。
思路:将原字符串翻转,如果翻转后的字符串和原字符串相等,则说明原字符串是回文。
代码实现:
def is_palindrome(s:str) -> bool:
return s==s[::-1]
调用:
s = 'racecar'
print(is_palindrome(s)) # True
本文介绍了判断一个字符串是否为回文的两种基本方法,以及Python自带的函数实现。不同的方法都有其优缺点,根据需要选择合适的方法。
