680.検証回文列2(Python)

1133 ワード

タイトル
難易度:★☆☆☆タイプ:配列
空でない文字列sを指定し、最大1文字を削除します.返信文字列にできるかどうかを判断します.
注意文字列には、a-zからの小文字のみが含まれます.文字列の最大長は50000です.

例1入力:aba出力:True
例2入力:「abca」出力:True解釈:c文字を削除できます.
に答える
いくつかの法則を考慮する必要があります.
  • 1文字列が要素を削除した後も、文字列の長さが奇数または偶数であっても、文字列は依然として文字列である.
  • は2つのポインタを定義して、私達は2つの頭から中間に遍歴することができて、左右の2つの異なる文字に出会う時、私達はどれを削除すべきかを判断することができなくて、それぞれ削除することを考慮することができて、どの文字を削除することを見てから、残りの文字は回文列を構成することができて、もしどれを削除しても、回文列を構成することができなければ

  • 符号化するときは、下付きの問題に注意する必要があります.
    class Solution:
        def validPalindrome(self, s: str) -> bool:
            left, right = 0, len(s) - 1
            is_palindrome = lambda s: s == s[::-1]                  #        s         
    
            while left <= right:                                    #        
                if s[left] == s[right]:                             #         
                    left, right = left + 1, right - 1               #     
                else:
                    #        ,                   
                    return is_palindrome(s[left+1: right+1]) or is_palindrome(s[left: right])
            return True
    

    質問やアドバイスがあれば、コメントエリアへようこそ~