假设在任意一个字符串中,需要匹配字符串中的括号是否一一成对出现。
思路分析
可以理解为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);
登录后可发表评论