Valid Palindrome

基础,基础

class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        lst = [x.lower() for x in s if x.isalnum()]
        start, end = 0, len(lst) - 1

        while start < end:
            if lst[start] != lst[end]:
                return False
            start += 1
            end -= 1
        return True

可以利用Python写个更简单的版本

class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        strings = [char.lower() for char in s if char.isalnum()]
        n = len(strings)
        return all(strings[i] == strings[n - i - 1] for i in xrange(n))

Valid Palindrome II

稍微改了一下题目变成求一个编辑距离之内的对称字符串了,这里还是一样的思考方式,两指针对进,如果指向的字符不相等,则肯定有一个字符要被丢出去,然后分别对这两种情况再继续比较一下,如果这两种都不行,那就不是一个编辑距离之内的对称字符串了

class Solution(object):
    def validPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        n = len(s)
        start, end = 0, n - 1
        while start < end and s[start] == s[end]:
            start += 1
            end -= 1

        if start >= end:
            return True

        return all(s[i] == s[end - i + start - 1] for i in xrange(start, end)) or \
                all(s[i + 1] == s[end - i + start] for i in xrange(start, end))

results matching ""

    No results matching ""