括号正确嵌套代码练习

时间:2017-01-14 21:19:59

标签: php stack

我解决了这个练习以检查括号是否正确嵌套,https://codility.com/programmers/lessons/7-stacks_and_queues/brackets/ 但它在某些测试中失败,正确率仅为33%。 我无法理解我的代码中的问题在哪里。

function solution($S) {

// write your code in PHP7.0
$string = str_split($S);
$stack = [];

foreach($string as $value){

    switch ($value) {   
        case '{':
            array_push($stack,$value);
        break;
        case '[':
            array_push($stack,$value);
        break;
        case '(':
            array_push($stack,$value);
        break;
        case '}':
            if(array_pop($stack) !== '{'){return 0;};
        break;
        case ']':
            if(array_pop($stack) !== '['){return 0;};
        break;
        case ')':
           if(array_pop($stack) !== '('){return 0;};
        break;
     }
  }
    return 1;
}

1 个答案:

答案 0 :(得分:2)

只需在return 1

之前插入以下行
if (sizeof($stack) != 0) return 0;

您忘记了必须缩小堆栈中的所有括号以获得正确的括号字符串。