美文网首页
[Easy] 680. Valid Palindrome II

[Easy] 680. Valid Palindrome II

作者: Mree111 | 来源:发表于2019-10-24 21:43 被阅读0次

    Description

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.

    Example 1:
    Input: "aba"
    Output: True
    Example 2:
    Input: "abca"
    Output: True
    Explanation: You could delete the character 'c'.

    Solution

    遇到不一样。考虑删左边还是删右边

       def validPalindrome(self, s):
            left, right = self.two_pointer(s, 0, len(s) - 1)            
            if left >= right:
                return True
                
            return self.is_palindrome(s, left + 1, right) or self.is_palindrome(s, left, right - 1)
    
        def is_palindrome(self, s, left, right):
            left, right = self.two_pointer(s, left, right)
            return left >= right
            
        def two_pointer(self, s, left, right):
            while left < right:
                if s[left] != s[right]:
                    return left, right
                left += 1
                right -= 1
            return left, right
    

    相关文章

      网友评论

          本文标题:[Easy] 680. Valid Palindrome II

          本文链接:https://www.haomeiwen.com/subject/qnnlvctx.html