括号匹配问题

来源:互联网 发布:linux内核源代码 编辑:程序博客网 时间:2024/06/05 02:43

给出一个字符串 然后判断字符串里面括号是否匹配

思路:
遍历一个字符串
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);
0 0
原创粉丝点击