Здравствуйте! Стоит вот такая задача.
Реализуйте функцию isBalanced, которая принимает на вход строку, состоящую только из открывающих и закрывающих круглых скобок, и проверяет, является ли эта строка корректной. Пустая строка (отсутствие скобок) считается корректной.
Строка считается корректной (сбалансированной), если содержащаяся в ней скобочная структура соответствует требованиям:
Скобки — это парные структуры. У каждой открывающей скобки должна быть соответствующая ей закрывающая скобка.
Закрывающая скобка не должна идти впереди открывающей. Такой вариант недопустим )(, а вот такой допустим ()().
1. Mandalorian - 24 Ноября, 2021 - 14:10:17 - перейти к сообщению
Написал решение такого плана:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- function isBalanced($str) {
- $resLeft = [];
- $resRight = [];
- for($i = 0; $i < $length; $i++){
- if ($str[$i] === '(') {
- $resLeft []= $i;
- } elseif ($str[$i] === ')') {
- $resRight []= $i;
- }
- }
- for($i = 0; $i < $length; $i++){
- if($resLeft[$i] > $resRight[$i]) {
- return false;
- }
- }
- return true;
- }
Вроде выдает правильные ответы.
Вопрос: может можно както упростить? Или на что-то не обратил внимания.