[🤔Code Kata] 2week-2


-DAY3-


<質問>
sは、複数の括弧からなるStringパラメータである.
true/false、sが有効かどうかを返してください.
「(」、「)」、「[」、「]」、「{」、「}」の6種類があります.次の場合に有効です.
かっこの順序は正しいです.
例:
  • s = "()"-> return true
  • s = "()[]{}"-> return true
  • s = "(]"-> return false
  • s = "([)]"-> return false
  • s = "{[]}"-> return true
  • 方法


    ああ...「{[()]}」「解決するか」()「{}[]」...
    信じて託すミンチョルも時間がかかる問題だ...結局解決できなかった
    実は私は似たような質問を書いたブロガーたちの答えを理解することに満足しています...呜呜呜呜...
    rapsby.logというブロガーが書いた内容が私の考えている解題方法なので、引用して記録します.
    1.stack、カッコ辞書を初期化します.
    2.文字列内でテキストのカッコpushをナビゲートして開く
    3.stackは空ではありません.stackの最後の要素が文字と同じ括弧のペアである場合は、続行します.
    4.繰り返し文が終わり、スタックが空になり、Trueに戻ります.
    def solution(s):
        d = {
            ')' : '(',
            '}' : '{',
            ']' : '['
        }
        stack = []
        for c in s:
            if c in '({[':
                stack.append(c)
            elif c in ')}]':
                if stack:
                    top = stack.pop()
                    if d[c] != top:
                        return False
                else:
                    return True
        return len(stack) == 0
    stackという新しいコンセプトが出てきました!!
    内容はまだ完全に理解されていませんが、コンセプトを整理しておきましょう~

    Stack


    stackは、リポジトリの上部にのみデータの挿入と削除が行われる羅列構造です.このような羅列構造を第1入出力と呼ぶ.

    stackは、文字列を逆順序で出力したり、演算子接尾辞表ビット法(演算子を被演算子の後ろにマークする方法AB+)を用いたりするために使用される.
    <Stack実施>
  • 必須init
    Pythonはスタックをリストとしてロードします.スタックデータ構造を初期化すると、空のリストが作成されます.
  • stack = []
  • push
    Stackに要素を入れる場合、appendメソッドを使用して上部に値を追加します.
  • stack = [1,2,3]
    stack.push(4)
    
    #stack = [1,2,3,4]
  • pop
    Stackから要素を削除すると、popメソッドを使用してリストの最後の要素が削除されます.
  • stack = [1,2,3]
    top = stack.pop()
    
    print(top)
    #stack = [1,2]
  • top
    Stackから要素を削除せず、インポート時のみ使用[1].
  • stack = [1,2,3]
    top = stack[-1]
    
    # top = 3
    これは難題で、私はまだ分かりませんが、私はやはり一定の法則を掌握しました.Pythonに詳しい日...来るかな…?😞