Сделай сам: допустимые круглые скобки — подробное руководство по проверке баланса скобок в вашем коде

Привет, коллеги-программисты! Сегодня мы собираемся погрузиться в увлекательный мир проверки круглых скобок в вашем коде. Мы все знаем, что даже крошечная неправильно поставленная скобка может вызвать каскад ошибок, поэтому очень важно убедиться, что ваши круглые скобки сбалансированы. В этом руководстве «Сделай сам» мы рассмотрим различные методы достижения этой цели, дополненные простыми для понимания примерами кода. Итак, начнем!

Метод 1: подход на основе стека
Один из наиболее распространенных и эффективных способов проверки баланса скобок — использование стека. Идея проста: перебрать код и поместить открывающие круглые скобки в стек. Когда вы встретите закрывающую скобку, извлеките верхний элемент из стека и проверьте, соответствует ли он закрывающей скобке. Если к концу итерации стек пуст, то круглые скобки сбалансированы.

Вот фрагмент кода на Python, демонстрирующий подход на основе стека:

def is_valid_parentheses(s):
    stack = []
    opening_brackets = ['(', '[', '{']
    closing_brackets = [')', ']', '}']

    for char in s:
        if char in opening_brackets:
            stack.append(char)
        elif char in closing_brackets:
            if not stack:
                return False
            if opening_brackets.index(stack.pop()) != closing_brackets.index(char):
                return False

    return len(stack) == 0

Метод 2: подсчет
В этом методе мы используем два счетчика для отслеживания количества открывающихся и закрывающих скобок. Выполните итерацию по коду, увеличивая счетчик открывающей скобки при обнаружении открывающей скобки и уменьшая его при обнаружении закрывающей скобки. Если счетчики в конце равны и оба равны нулю, то круглые скобки сбалансированы.

Давайте взглянем на фрагмент кода на JavaScript, демонстрирующий подход подсчета:

function isValidParentheses(s) {
    let openCount = 0;

    for (let char of s) {
        if (char === '(') {
            openCount++;
        } else if (char === ')') {
            if (openCount === 0) {
                return false;
            }
            openCount--;
        }
    }

    return openCount === 0;
}

Метод 3: подход с использованием регулярных выражений.
Если вы любите приключения, вы также можете использовать регулярные выражения для проверки сбалансированности круглых скобок. Идея состоит в том, чтобы заменить все допустимые пары круглых скобок пустой строкой и проверить, пуста ли полученная строка.

Вот фрагмент кода на Java, демонстрирующий подход с использованием регулярных выражений:

import java.util.regex.Pattern;
public class ParenthesesValidator {
    public static boolean isValidParentheses(String s) {
        String regex = "\\(\\)|\\[\\]|\\{\\}";
        Pattern pattern = Pattern.compile(regex);
        String result = s.replaceAll(regex, "");
        return result.isEmpty();
    }
}

Поздравляем! Вы изучили несколько методов проверки круглых скобок в вашем коде. Независимо от того, предпочитаете ли вы подход на основе стека, метод подсчета или даже подход с регулярными выражениями, теперь у вас есть инструменты, позволяющие обеспечить сбалансированность круглых скобок. Помните, что хорошо сбалансированный код — это ключ к плавному выполнению и безошибочным программам. Приятного кодирования!