给出一个字符串 然后判断字符串里面括号是否匹配
思路:
遍历一个字符串
1 如果是'('或者'[' 压入栈,
2 如果是 ’ ) ’ ,看看栈顶的元素是不是'(',如果是,则出栈,不是则返回false
3 如果是']'看看栈顶的元素是不是']',如果是,则出栈,不是则返回false
4 判断 栈是否是空的,如果是则返回true,不是则返回false
php 代码如下:需要用数组函数模拟栈
function match($str)
{
$str = str_replace(' ', '', $str);// 把空格删除
$str = str_split($str);//字符串转成数组
var_dump($str);
$stack = array();
foreach ($str as $k => $v) {
if ($v == '(' || $v == '[') {
array_push($stack, $v);
}
if ($v == ')') {
if (end($stack) == '(')
array_pop($stack);
else
return false;
}
if ($v == ']') {
if (end($stack) == '[')
array_pop($stack);
else
return false;
}
}
if (count($stack) == 0) {
return true;
else
return false;
}
$str = '(((( [])[[东asa安定飞sdf]]))) [] ( ) ';
$res=match($str);
var_dump($res);