Python 解LeetCode:680. Valid Palindrome II

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 解LeetCode:680. Valid Palindrome II相关的知识,希望对你有一定的参考价值。

        题目:给定一个字符串,在最多删除一个字符的情况下,判断这个字符串是不是回文字符串。

       思路:回文字符串,第一想到的就是使用两个指针,前后各一个,当遇到前后字符不一致的时候,有两种情况,删除前面字符或者删除后面字符。由于删除一个字符后剩下的仍旧是字符串,可以直接递归处理了。然后用一个flag,当达到2时,就可以递归结束了。

      代码如下:

 1 class Solution(object):
 2 
 3     def isPalindrome(self, s, left, right, flag):
 4         while left < right:
 5             if s[left] == s[right]:
 6                 left += 1
 7                 right -= 1
 8             else:
 9                 if flag == 1:
10                     return False
11                 flag = 1
12                 return (self.isPalindrome(s, left+1, right, flag) or
13                         self.isPalindrome(s, left, right-1, flag))
14         return True
15 
16     def validPalindrome(self, s):
17         """
18         :type s: str
19         :rtype: bool
20         """
21         return self.isPalindrome(s, 0, len(s)-1, 0)

 

以上是关于Python 解LeetCode:680. Valid Palindrome II的主要内容,如果未能解决你的问题,请参考以下文章

Python解Leetcode: 226. Invert Binary Tree

Python 解leetcode:728. Self Dividing Numbers

LeetCode JavaScript实现 回文链表(回文字符串) 题型汇总(双指针解法)

算法千题案例每日LeetCode打卡——67.相对名次

算法千题案例每日LeetCode打卡——67.相对名次

Leetcode_easy680. Valid Palindrome II