LeetCode0680.ValidPalindromeIIValidationPalindromeII[易][Python][双指针]Title英文标题链接给定一个非空字符串s,你最多可以删除一个字符。判断能不能使它成为回文。示例1:输入:“aba”输出:True示例2:输入:“abca”输出:True解释:您可以删除字符'c'。注意:该字符串将仅包含小写字符a-z。字符串最大长度为50000给定一个非空字符串s,最多删除一个字符。判断能否成为回文串。示例1:输入:"aba"输出:True示例2:输入:"abca"输出:True解释:您可以删除字符c。注意:该字符串仅包含a-z中的小写字母。一个字符串的最大长度是50000。思路双指针左指针从头到尾,右指针从尾到头。如果s[left]和s[right]相等,则left+1,right-1。如果s[left]和s[right]不相等,分别删除s[left]或s[right],判断是否其余字符串满足回文,只要其中一个满足。时间复杂度:O(n)Python代码classSolution(object):defvalidPalindrome(self,s):""":types:str:rtype:bool"""left,right=0,len(s)-1#whileleft<=right:ifs[left]==s[right]:left+=1right-=1else:temp1=s[:left]+s[left+1:]#删除之后的字符s[left],即字符串拼接:s[0]tos[left-1]+s[left+1]tos[len(s)-1]temp2=s[:right]+s[right+1:]iftemp1==temp1[::-1]ortemp2==temp2[::-1]:#判断是删除s[left]还是删除s[right],s是否是回文,[::-1]是从尾到头倒序遍历returnTrueelse:returnFalsereturnTrue代码地址github链接
