Python程序:检查字符串是否对称或回文

Python程序:检查字符串是否对称或回文

更多Python相关文章,请阅读:Python 教程

前言

在日常的字符串处理中,需要判断一个字符串是否对称或回文。对称即字符串的前半部分与后半部分反转后完全一致;回文即正读与倒读一致。Python语言提供了多种方法检查字符串是否对称或回文。本文将简要介绍其中比较实用的几种。

方法一:反转后比较

这是最简单的方法。将字符串反转后,与原字符串进行比较。如果一致,则该字符串为对称或回文;否则,不是。

def reverse_str(s):
    return s[::-1]

def is_symmetric(s):
    if s == reverse_str(s):
        return True
    return False

如字符串 “level”,反转后为 “level”,与原字符串对称,是一个回文字符串。

s = 'level'
print(is_symmetric(s))  # True

方法二:左右比较

这种方法在不使用Python字符串的反转功能时,可以采用。将字符串的左半部分与右半部分进行比较。当字符串长度为偶数时,直接比较左右两部分;当长度为奇数时,比较左半部分与右半部分去掉中心字符的结果。

def is_symmetric(s):
    n = len(s)
    if n % 2 == 0:
        left_half = s[:n // 2]
        right_half = reverse_str(s[n // 2:])
    else:
        left_half = s[:n // 2]
        right_half = reverse_str(s[(n // 2) + 1:])
    if left_half == right_half:
        return True
    return False

如字符串 “noon”,左半部分为 “no”,右半部分为 “on”,二者反转后相等,证明该字符串为对称或回文。

s = 'noon'
print(is_symmetric(s))  # True

方法三:递归比较

这种方法采用递归的方式,比较字符串第一个字符与最后一个字符是否相等;相等的话,递归比较去掉这两个字符的字符串是否对称或回文;否则,该字符串不是对称或回文。

def is_symmetric(s):
    if len(s) == 1:
        return True
    if s[0] == s[-1]:
        return is_symmetric(s[1:-1])
    return False

如字符串 “racecar”,去掉首尾后为 “aceca”,二者再去掉首尾后为 “cec”,反转为 “cec”,证明该字符串为对称或回文。

s = 'racecar'
print(is_symmetric(s))  # True

方法四:切片比较

在Python3中,字符串提供了字符串切片的功能。可以先将字符串倒序,然后和原字符串进行切片比较。

def is_symmetric(s):
    if s == s[::-1]:
        return True
    return False

如字符串 “civic”,反转后为 “civic”,与原字符串完全一致,是一个回文字符串。

s = 'civic'
print(is_symmetric(s))  # True

结论

本文介绍了Python语言判断字符串是否对称或回文的多种方法。其中,反转后比较是最简单的;左右比较需要考虑字符串长度奇偶性;递归比较比较灵活;切片比较则更为简单明了。根据实际需要,适当选择方法,可以提高代码的运行效率,为字符串处理带来便捷。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程