使用栈来判断是否是有效的括号。如果括号无效,如果堆栈不为空,则将栈顶字符弹出堆栈并匹配正确的字符。如果左右字符不匹配,则括号无效。如果左右字符匹配,则继续扫描下一个字符。扫描完所有字符后:栈为空,说明括号有效,栈不为空,说明括号无效require'Stack.php';classSolution{protectedstatic$solution=['('=>')','{'=>'}','['=>']'];/***题目来源Leetcode*https://leetcode-cn.com/problems/valid-parentheses/*判断是否为有效括号*@paramString$s*@returnBoolean*/publicfunctionisValid($s){$stack=newStack();$len=strlen($s);对于($i=0;$i<$len;$i++){$char=$s[$i];if(in_array($char,array_keys(self::$solution))){//推入堆栈。左边的字符被压入堆栈。为什么是左边的字符?如果第一个是正确的字符,它一定不是有效的括号$stack->push($char);}else{if($stack->isEmpty())返回false;$left=$stack->pop();如果($char!==self::$solution[$left])返回false;}}返回$stack->isEmpty();}}$solution=newSolution();$ret=$solution->isValid('([{]}])');var_dump($ret);源码下载:gitee
