0
点赞
收藏
分享

微信扫一扫

LeetCode680_验证回文字符串 Ⅱ


1. 题目

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。

示例 1:
输入: s = "aba"
输出: true

示例 2:
输入: s = "abca"
输出: true
解释: 你可以删除c字符。

示例 3:
输入: s = "abc"
输出: false

提示:
1 <= s.length <= 105

2. 题解

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

def is_palindrome(self, s: str, i: int, n: int) -> bool:
left = 0
right = n - 1
while left < right:
if left == i:
left += 1
elif right == i:
right -= 1
if s[left] != s[right]:
return False
left += 1
right -= 1
return True


举报

相关推荐

0 条评论