我解决了这个练习以检查括号是否正确嵌套,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;
}
答案 0 :(得分:2)
只需在return 1
if (sizeof($stack) != 0) return 0;
您忘记了必须缩小堆栈中的所有括号以获得正确的括号字符串。