680-valid-palindrome-ii

Try it on leetcode

Description

Given a string s, return true if the s can be palindrome after deleting at most one character from it.

 

Example 1:

Input: s = "aba"
Output: true

Example 2:

Input: s = "abca"
Output: true
Explanation: You could delete the character 'c'.

Example 3:

Input: s = "abc"
Output: false

 

Constraints:

  • 1 <= s.length <= 105
  • s consists of lowercase English letters.

Solution(Python)

class Solution:
    def validPalindrome(self, s: str) -> bool:
        i = 0
        j = len(s) - 1

        while i < j:
            if s[i] != s[j]:
                return self.checkPalindrome(s, i + 1, j) or self.checkPalindrome(
                    s, i, j - 1
                )
            i += 1
            j -= 1
        return True

    def checkPalindrome(self, s, i, j):
        while i < j:
            if s[i] != s[j]:
                return False

            i += 1
            j -= 1
        return True