1. 程式人生 > >Python 解LeetCode:680. Valid Palindrome II

Python 解LeetCode:680. Valid Palindrome II

-1 lee col type bject rom += 指針 -s

題目:給定一個字符串,在最多刪除一個字符的情況下,判斷這個字符串是不是回文字符串。

思路:回文字符串,第一想到的就是使用兩個指針,前後各一個,當遇到前後字符不一致的時候,有兩種情況,刪除前面字符或者刪除後面字符。由於刪除一個字符後剩下的仍舊是字符串,可以直接遞歸處理了。然後用一個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