有效回文串

来源:互联网 发布:关于大数据营销的案例 编辑:程序博客网 时间:2024/04/29 07:45

题目描述:给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。

样例:

"A man, a plan, a canal: Panama" 是一个回文。

"race a car" 不是一个回文。


之前判断过一个链表十分是回文链表(详见:点击打开链接),字符串的判断比链表简单,因为可以从后往前回溯。

但是在这道题当中,空格,标点,以及其他非字母或数字的字符是不能算在内的,所以,我们考虑这样来设计:

还是两个指针,left和right,一个从左往右,一个从右往左遍历字符串,碰到非字母或数字的跳过,碰到字母或数字则进行比较。

代码如下:

class Solution:    # @param {string} s A string    # @return {boolean} Whether the string is a valid palindrome    def isPalindrome(self, s):        left, right = 0, len(s) - 1        while left < right:            # 查找左边的是字母或数字的位置            while left < right and not s[left].isalnum():                left += 1            # 查找右边的是字母或数字的位置            while left < right and not s[right].isalnum():                right -= 1            # 若它们的小写形式不等,返回False            if s[left].lower() != s[right].lower():                return False            left += 1            right -= 1        return True        # Write your code here


0 0
原创粉丝点击