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

Python函数-如何判断一个字符串是否为回文

发布时间:2023-06-20 18:02:29

回文是指正着念和反着念都是一样的字符串,它是一种非常常见的字符串特征。判断一个字符串是否为回文有很多种方法,本文将介绍两种基本方法以及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自带的函数实现。不同的方法都有其优缺点,根据需要选择合适的方法。