假设在任意一个字符串中,需要匹配字符串中的括号是否一一成对出现。
思路分析
可以理解为res是一个堆。
有左括号时将左括号入堆,有右括号时弹出最后入堆的括号判断是否匹配。
function check($str) { $res = []; for ($i=0;$i<strlen($str);$i++){ $v = $str[$i]; if($v == '(' || $v == '[' || $v == '{'){ array_push($res,$v); } if($v == ')' && array_pop($res) != '('){ return '匹配错误'; } if($v == ']' && array_pop($res) != '['){ return '匹配错误'; } if($v == '}' && array_pop($res) != '{'){ return '匹配错误'; } } } $str = '{[([{}])]}'; echo check($str);
登录后可发表评论