LeetCode-680-驗證迴文字串 Ⅱ
阿新 • • 發佈:2020-11-13
給定一個非空字串 s,最多刪除一個字元。判斷是否能成為迴文字串。
image.png
解題思路:
判斷是否迴文字串:isPalindrome = lambda x: x==x[::-1],即將字串x倒置,還和原來的一樣;
如何判斷刪除一個字元後還是迴文字串?假設字串s='abccbca',當用雙指標從兩端向中間遊走,如果兩指標所指字元不相等,考慮刪除其中之一,再判斷是否迴文字串。
該例中當left=1和right=5時,刪除其中之一再判斷,只需判斷left和right之間的字串是否迴文,生成的新的兩個字串分別為刪除右邊字元:s[left:right],刪除左邊字元:s[left+1:right+1]。
Python3程式碼:
class Solution:
def validPalindrome(self, s: str) -> bool:
left = 0
right = len(s)-1
isPalindrome = lambda x : x == x[::-1]
while left<=right: if s[left] != s[right]: return isPalindrome(s[left:right]) or isPalindrome(s[left+1:right+1]) else: left+=1 right-=1 return True