用php实现 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效
代码如下:
//给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效
function sLeft($s)
{
if ($s == '{' || $s == '(' || $s == '[') {
return 1;
} else {
return 2;
}
}
function isPair($p, $curr)
{
if (($p == '{' && $curr == '}') || ($p == '[' && $curr == ']') || ($p == '(' && $curr == ')')) {
return 1;
} else {
return 0;
}
}
function string($string)
{
$arr = [];
$leng = strlen($string);
for ($i=0; $i<$leng; $i++) {
$str = substr($string, $i, 1);
if (sLeft($str)==1) {
array_push($arr, $str);
} else {
$p = array_pop($arr);
if (isPair($p, $str)==0) {
return '非法';
}
}
}
if (empty($arr)) {
return "合法";
} else {
return "非法";
}
}
$s= '{[[]()[]()()]}';
string($s);
思路:利用出栈入栈 检查判断是否合法有效