Python 解LeetCode:680. Valid Palindrome II
阿新 • • 發佈:2017-10-23
-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