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

Python函数:判断一个字符串是否为回文串

发布时间:2023-06-12 05:17:21

回文串是指正着读和反着读都一样的字符串,比如“level”、“racecar”等等。在 Python 中,我们可以通过编写一个函数来判断一个字符串是否为回文串。

实现方式1:索引对比

我们可以使用字符串的索引,从字符串的开头和结尾开始遍历,并比较两个字符是否相等。如果存在不相等的情况,则该字符串就不是回文串。

代码实现如下:

def is_palindrome_1(s):

    length = len(s)

    for i in range(length // 2):

        if s[i] != s[length - i - 1]:

            return False

    return True

在这个函数中,我们定义了一个长度变量 length,用于存储字符串的长度。然后我们使用 for 循环,从字符串的开头和结尾分别遍历,比较两个字符是否相等。如果存在不相等的情况,则该字符串就不是回文串,返回 False。如果遍历完整个字符串,都没有发现不相等的情况,则该字符串是回文串,返回 True。

实现方式2:切片对比

我们也可以使用 Python 切片来实现回文串的判断。Python 的切片操作可以得到一个字符串的逆序字符串,然后比较两个字符串是否相等即可。

代码实现如下:

def is_palindrome_2(s):

    return s == s[::-1]

在这个函数中,我们直接使用 s[::-1] 得到了 s 的逆序字符串,然后和 s 对比是否相等。如果相等,说明该字符串是回文串,返回 True。如果不相等,说明该字符串不是回文串,返回 False。

优缺点分析:

索引对比的方式使用了 for 循环遍历整个字符串,逐个比较字符是否相等,稍微耗费一些时间。而切片对比的方式则直接通过切片得到了逆序字符串,比较两个字符串的时间复杂度非常低。不过,切片方式也需要耗费额外的存储空间,对于大量字符串的处理,可能会影响效率。

不管采用哪种方式,都需要将字符串从头到尾遍历一遍,所以时间复杂度都为 O(n)。可以根据实际需要选择最适合的实现方式。