【005】Leetcode—雙重指針—680. 驗證迴文字符串 Ⅱ(Valid Palindrome II)

題目信息

給定一個非空字符串 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章