844.リトラクトを含む文字列の比較(Python)

990 ワード

タイトル
難易度:★☆☆タイプ:スタック、文字列
SとTの2つの文字列が与えられ、空白のテキストエディタにそれぞれ入力された後、両者が等しいかどうかを判断し、結果を返します.チェックアウト文字を表します.
ヒント1<=S.length<=200 1<=T.length<=200 SおよびTは、小文字および文字'#'のみを含む.

例1入力:S=「ab#c」、T=「ad#c」出力:true解釈:SとTはいずれも「ac」になる.
例2入力:S=“ab##”,T=“c#d#”出力:true解釈:SもTも“”になります.
例3入力:S=“a##c”,T=“a#c”出力:true解釈:SもTも“c”になります.
例4入力:S="a#c"、T="b"出力:false解釈:Sは"c"になるが、Tは"b"である.
に答える
スタック構造を使用してチェックアウトの問題を処理し、文字を順番にスタックに追加し、「#」に遭遇した場合はスタックトップ要素をポップアップし、最後にスタックに残った要素を順番に文字列に接続すればよい.
class Solution:
    def backspaceCompare(self, S: str, T: str) -> bool:
        def remove_backspace(s):
            res = []
            for c in s:
                if c == '#' and res:
                    res.pop()
                else:
                    res.append(c)
            return ''.join(res)
        return remove_backspace(S) == remove_backspace(T)

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