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

Python函数实现判断字符串是否为回文数

发布时间:2023-06-12 07:33:46

回文数是指正着读和反着读都相同的数字或字符串,例如121、12321、level等。判断一个字符串是否为回文数是编程中常见的面试题,也是Python语言中的一个经典例题。下面将介绍如何使用Python函数来实现判断字符串是否为回文数。

1. 方法一:切片法

切片法是判断字符串是否为回文数的常用方法之一。具体实现步骤如下:

(1)定义一个函数,接收一个字符串作为参数;

(2)使用切片操作将字符串反转,得到反转后的字符串;

(3)比较反转后的字符串和原字符串是否相等,如果相等则返回True,否则返回False。

代码如下:

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

上述代码中,[::-1]表示对字符串进行切片,步长为-1,即反转字符串。

2. 方法二:中心扩展法

中心扩展法是另一种常用的判断字符串是否为回文数的方法。实现步骤如下:

(1)定义一个函数,接收一个字符串作为参数;

(2)从字符串的中心开始遍历,分别向左和向右扩展,直到左右两侧的字符不相等为止,并记录扩展的长度;

(3)如果扩展的长度为奇数,则回文中心为一个字符;如果为偶数,则回文中心为两个字符。

代码如下:

def is_palindrome(string):
    n = len(string)
    for i in range(n):
        # 回文中心为一个字符
        l, r = i, i
        while l >= 0 and r < n and string[l] == string[r]:
            l, r = l - 1, r + 1
        if r - l - 1 == len(string):
            return True
        
        # 回文中心为两个字符
        l, r = i, i + 1
        while l >= 0 and r < n and string[l] == string[r]:
            l, r = l - 1, r + 1
        if r - l - 1 == len(string):
            return True
    return False

上述代码中,i表示回文中心的位置,l和r分别表示扩展的左右两侧字符的位置,如果左右两侧的字符相等,则继续向外扩展,否则停止扩展。r - l - 1表示当前扩展的回文子串的长度。

3. 方法三:递归法

递归法也可以用来判断字符串是否为回文数。实现步骤如下:

(1)定义一个函数,接收一个字符串作为参数;

(2)判断字符串的长度是否为0或1,如果是则返回True;如果不是,则判断首尾两个字符是否相等,如果相等则递归判断剩余部分是否是回文数。

代码如下:

def is_palindrome(string):
    if len(string) <= 1:
        return True
    if string[0] != string[-1]:
        return False
    return is_palindrome(string[1:-1])

上述代码中,string[1:-1]表示去掉首尾字符后的子串。

总结

判断字符串是否为回文数是Python中一道经典的面试题,有多种不同的实现方法。本文介绍了三种常用的方法:切片法、中心扩展法和递归法。在实际编程中,可以根据具体情况选择最适合的方法。