题目:
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例 1:
输入: s = “aba”
输出: true
示例 2:
输入: s = “abca”
输出: true
解释: 你可以删除c字符。
示例 3:
输入: s = “abc”
输出: false
因为最多只能删除一个字符,那么在从两端往中间进行判断的时候遇见左右两指针指向的字符不相等的时候:我们对当前两指针指向的字符和中间剩余的字符进行是否是回文字符的判断即可(只删除左指针之后和只删除右指针之后,二者有一个复合回文字符即可)
代码:
class Solution:
def validPalindrome(self, s: str) -> bool:
l, r = 0, len(s)-1
while l <= r :
if s[l] == s[r]:
l += 1
r -= 1
else:
j_1 = s[l+1:r+1]#删掉左边不等的进行判断,r+1是因为当前r代表的指针也是为判断的字符需要包含在内
j_2 = s[l:r]#删掉右边不等的进行判断
return j_1 == j_1[::-1] or j_2 == j_2[::-1]
return 1 == 1
该博客讨论了一个编程问题,即如何确定一个字符串在删除最多一个字符后是否能成为回文。它提供了示例输入和输出,并给出了Python代码实现,代码中通过双指针方法检查字符串是否可以变为回文,通过删除左右两端的一个字符来实现。
135

被折叠的 条评论
为什么被折叠?



