PHP 判断括号是否闭合

一开始的思路就是判断每种括号的开闭数量是否相等,其实虽然也能实现但是搞得太复杂了;

后来查了查,只需设一个常量,左括号  +1,右括号   -1,闭合的话为0,没闭合的话不为0,

出现<0即为顺序不对。

<?php

$str = '(())()';
if ($str == '(' || $str == ')') {
    die('未闭合');
}
$arr = str_split($str);
echo check($arr);

function check($arr = [])
{
    $d = 0;
    foreach ($arr as $k => $v) {
        if ($v == '(') {
            $d += 1;
        }
        if ($v == ')') {
            $d -= 1;
        }
        if ($d < 0) {
            break;
        }
    }
    return $d == 0 ? '已闭合' : '未闭合';
}

猜你喜欢

转载自www.cnblogs.com/rxbook/p/10571187.html