題目信息
給定一個非空字符串 s,最多刪除一個字符。判斷是否能成爲迴文字符串。
示例:
1:
輸入: “aba”
輸出: True
2:
輸入: “abca”
輸出: True
說明: 你可以刪除c字符。
解題思路
i = 0
j = len(s)-1
while i < j:
if s[i]!=s[j]:
#左側後移一位
a = s[i+1:j+1]
#右測前移一位
b = s[i:j]
if a == a[::-1] or b == b[::-1]:
return True
else:
return False
i += 1
j -= 1
else:
return True
採用雙指針,頭指針設爲i,尾指針設爲j。
如果遇到前後不等,取a爲捨棄左側一元素的子序列,取b爲捨棄右側一元素的子序列,若a或b爲迴文,則返回True;反之,返回False。如果正常退出循環,說明是正常回文串,也返回True。
在python中可以用a == a[::-1]輕鬆的判斷序列是否爲迴文!
學習
TODO