跳到主要内容

680. 验证回文字符串-2(Easy)

题目描述

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

样例

Input: "aba"
Output: True

Input: "abca"
Output: True
# 删除 c

题解

双指针搜索,中间加上了一项条件的判断

Python示例

class Solution:
def validPalindrome(self, s: str) -> bool:
def checkPalindrom(l, r):
while l < r:
if s[l] != s[r]:
return False
l += 1
r -= 1
return True

l, r = 0, len(s) - 1
while l < r:
if s[l] == s[r]:
l += 1
r -= 1
else:
return checkPalindrom(l+1, r) or checkPalindrom(l, r-1)
return True

Go 示例

func isPalindrome(s string, i, j int) bool {
for i < j {
if s[i] != s[j] {
return false
}
i++
j--
}
return true
}

func validPalindrome(s string) bool {
if len(s) == 0 || len(s) == 1 {
return true
}

for i, j:= 0, len(s) - 1; i < j;{
if s[i] == s[j] {
i++
j--
} else {
return isPalindrome(s, i + 1, j) || isPalindrome(s, i, j - 1)
}
}
return true
}