LeetCode 680. 验证回文字符串 Ⅱ
2020-06-06 本文已影响0人
freesan44
题目
给定一个非空字符串 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