680_Valid Palindrome II

Given a non-empty strings, 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'.

Note:

  1. The string will only contain lowercase characters a-z. The maximum length of the string is 50000.

Solution

class Solution(object):
    def validPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        left, right = 0, len(s) - 1
        while left < right:
            if s[left] == s[right]:
                left += 1
                right -= 1
            else:
                temp1 = s[left : right]  # if delete right element
                temp2 = s[left+1 : right + 1] # if delete left element
                return temp1 == temp1[::-1] or temp2 == temp2[::-1]
        return True

Last updated