Я решил это упражнение, чтобы проверить, правильно ли вложены скобки, 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;
}
Просто вставьте следующую строку перед вашим return 1
if (sizeof($stack) != 0) return 0;
Вы забыли, что все скобки в вашем стеке должны были быть уменьшены для правильной цепочки скобок.
Других решений пока нет …