力ボタン-スタックを使用して有効なカッコかどうかを判断します.

1536 ワード

スタックを使用して有効なかっこかどうかを判断
問題源于力扣:https://leetcode-cn.com/probl...
考え方:
  • 左の文字に出会って、左の文字をスタック
  • に入れます
  • で右文字が見つかりました.
  • スタックが空の場合、
  • スタックが空でない場合、スタックの先頭文字をスタックから出て、右文字と一致する
  • 左右の文字が一致しない場合は、
  • を説明する.
  • 左右の文字が一致する場合、次の文字
  • をスキャンし続けます.
  • すべての文字をスキャンした後:
  • スタックが空で、
  • を示します.
  • スタックは空ではありません.
  • を示します.
    require 'Stack.php';
    class Solution {
    
        protected static $solution = [
            '(' => ')',
            '{' => '}',
            '[' => ']'
        ];
        /**
         *       
         * https://leetcode-cn.com/problems/valid-parentheses/
         *           
         * @param String $s
         * @return Boolean
         */
        public function isValid($s) {
            $stack = new Stack();
            $len = strlen($s);
            for($i=0;$ipush($char);
                }else{
                    if($stack->isEmpty()) return false;
                    $left = $stack->pop();
                    if($char !== self::$solution[$left]) return false;
                }
            }
            return $stack->isEmpty();
        }
    }
    
    
    $solution = new Solution();
    $ret = $solution->isValid('([{]}])');
    var_dump($ret);
    

    ソースのダウンロード:gitee