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

如何用Python函数检测给定字符串是否为回文字符串?

发布时间:2023-05-24 06:37:51

回文字符串是指正着读和倒着读都一样的字符串,比如“level”、“racecar”、“madam”等。常见的方法是将字符串翻转,如果和原字符串一样,就是回文字符串。

下面,我们使用Python编写一个函数来检测给定字符串是否为回文字符串。

方法一:翻转字符串

种方法是通过翻转字符串来判断是否为回文字符串。具体步骤如下:

1. 将字符串翻转。

2. 比较翻转后的字符串和原始字符串是否相等。

3. 如果相等,返回True,否则返回False。

代码实现如下:

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

这里用到了Python的切片(slice)功能,[::-1]表示从后往前每隔一个字符取一个字符,即反转字符串。例如,'hello'[::-1]结果为'olleh'。

方法二:对位比较

第二种方法是对位比较。具体步骤如下:

1. 使用双指针分别指向字符串的 个字符和最后一个字符。

2. 比较指向的字符是否相等。

3. 如果相等,将指针向中间移动;如果不相等,返回False。

4. 直到两个指针相遇或交错,返回True。

代码实现如下:

def is_palindrome(s):
    left, right = 0, len(s) - 1
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    return True

这种方法比 种方法更节省空间,因为只需要一遍遍历字符串,不需要翻转字符串。

测试代码如下:

s1 = "level"
s2 = "hello"
s3 = "racecar"
s4 = "world"
s5 = "madam"

print(is_palindrome(s1)) # True
print(is_palindrome(s2)) # False
print(is_palindrome(s3)) # True
print(is_palindrome(s4)) # False
print(is_palindrome(s5)) # True

输出结果:

True
False
True
False
True

以上就是通过Python函数检测给定字符串是否为回文字符串的两种方法。 种方法简单易懂,但是需要额外的空间来存储翻转后的字符串;第二种方法更节省空间,但需要额外的时间来遍历字符串。