题目
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca" 输出: True 解释: 你可以删除c字符。
注意:
字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。
解题思路
如果出现不对称,就检测缩减一个字符后的数组是否对称
class Solution: def validPalindrome(self, s: str) -> bool: # #常规解法(超出时间) # sList = list(s) # sLen = len(s) # if sList[:] == sList[::-1]: # return True # for i in range(sLen): # temp = sList.copy() # temp.pop(i) # if temp[:] == temp[::-1]: # return True # return False #双指针 left = 0 right = len(s)-1 while left < right: if s[left] == s[right]: left += 1 right -= 1 elif s[left+1:right+1] == s[left+1:right+1][::-1] or s[left:right] == s[left:right][::-1]: print(s[left+1:right+1]) print(s[left:right]) return True else: return False return True