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

如何判断字符串是否是回文串

发布时间:2023-12-04 07:51:58

判断一个字符串是否是回文串,可以使用双指针的方法。双指针分别从字符串的两端开始遍历,依次比较指针所指的字符是否相等。如果相等,则将两个指针向中间移动继续比较;如果不相等,则可以直接判断该字符串不是回文串。

下面是一个使用Python语言实现的判断字符串是否是回文串的例子:

def is_palindrome(s):
    left = 0  # 左指针
    right = len(s) - 1  # 右指针
    
    while left < right:
        if s[left] != s[right]:  # 若两个指针所指字符不相等,则不是回文串
            return False
        left += 1
        right -= 1
    
    return True

# 测试用例
print(is_palindrome("abcba"))  # True
print(is_palindrome("abcdcba"))  # True
print(is_palindrome("abcdeba"))  # False

在上述代码中,我们定义了一个is_palindrome函数,参数为字符串s。我们使用两个指针leftright分别指向字符串的左右两端,left从0开始,rightlen(s)-1开始。然后,我们使用一个while循环,当left小于right时,依次比较leftright所指的字符是否相等。如果相等,则将两个指针向中间移动一位,继续比较下一个字符;如果不相等,即可判断该字符串不是回文串,直接返回False。最后,如果循环结束时没有返回False,则可以判断该字符串是回文串,返回True

使用上述代码作为例子,我们可以测试一些字符串是否是回文串。

对于输入的字符串"abcba",由于从两端往中间遍历的字符依次相等,所以该字符串是回文串,输出结果为True

对于输入的字符串"abcdcba",同样从两端往中间遍历的字符依次相等,所以该字符串也是回文串,输出结果为True

对于输入的字符串"abcdeba",即使两端的"a"相等,中间的字符"e"和"b"不相等,所以该字符串不是回文串,输出结果为False

通过这个例子,我们可以看到如何使用双指针来判断字符串是否是回文串,同时也能体会到了双指针法在解决类似问题时的简洁而高效的特点。