如何判断字符串是否是回文串
发布时间: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。我们使用两个指针left和right分别指向字符串的左右两端,left从0开始,right从len(s)-1开始。然后,我们使用一个while循环,当left小于right时,依次比较left和right所指的字符是否相等。如果相等,则将两个指针向中间移动一位,继续比较下一个字符;如果不相等,即可判断该字符串不是回文串,直接返回False。最后,如果循环结束时没有返回False,则可以判断该字符串是回文串,返回True。
使用上述代码作为例子,我们可以测试一些字符串是否是回文串。
对于输入的字符串"abcba",由于从两端往中间遍历的字符依次相等,所以该字符串是回文串,输出结果为True。
对于输入的字符串"abcdcba",同样从两端往中间遍历的字符依次相等,所以该字符串也是回文串,输出结果为True。
对于输入的字符串"abcdeba",即使两端的"a"相等,中间的字符"e"和"b"不相等,所以该字符串不是回文串,输出结果为False。
通过这个例子,我们可以看到如何使用双指针来判断字符串是否是回文串,同时也能体会到了双指针法在解决类似问题时的简洁而高效的特点。
