[PyLv 2]ペアリングの削除


問題の説明


ペアリングを削除するには、アルファベット小文字の文字列で開始します.まず、文字列内で同じ文字を2つ持つペアを検索します.次に、この2つの文字列を削除し、前後に文字列を接続します.この手順を繰り返してすべての文字列を削除すると、ペアリングの削除が終了します.文字列Sが指定されている場合は、ペアリングを正常に削除できるかどうかを返す戻り関数を完了します.成功した場合は1を返し、そうでない場合は0を返します.
例えば、文字列S=Baabaa
b aa baa → bb aa → aa →
すべての文字列を中の順序で削除できるため、1を返します.

せいげんじょうけん

  • 文字列長:100000以下の自然数
  • 文字列はすべて小文字で構成されています.
  • I/O例



    方法


    まず,問題の説明を理解した後,学んだアルゴリズム理論を応用する練習が欠けている.
    アルゴリズムでこの問題を解決するのに多くの時間がかかった.😂
    私は長い時間をかけて一度読んでみましたが、このように試してみると、勉強の内容の中でスタックの原理を利用していることがわかりました.
    解除できることを確認します.
    値を比較するには、あるリストから別のリストに値を移動する必要があります.
    stackという名前のリストが作成されました.
    値を「後続s」リストのstackに移動し、次の文字を前の文字と比較します.
    そうでない場合は他の文字を削除し、そうであればスタックに入力された文字を削除します.
    pop()を使用して、このプロセスで最後に入力した文字を削除します.
    最終的に同じ文字に接続され、削除できる場合、これらの文字はすべて上記の方法で削除されます.
    stackリストには値がありません.
    この場合、1を返します.そうでなければ、スタックリストに値がある場合は0を返します.
    def solution(s):
        answer = 0
        stack = []
        for i in s:
            if len(stack) == 0:
                stack.append(i)
            elif stack[-1] == i:
                stack.pop()
            else: 
                stack.append(i)
        if len(stack) ==0:
            solution = 1
        else:
            solution = 0
        return solution