Новости IT, Tech-лайфхаки & Кодинг

Решение задачи #20. Python LeetCode, Valid Parentheses

Опубликовано: 19.05.2025, 04:46 | Автор: HDHai

Задача на проверку корректности скобочных последовательностей в Python. Это классическая алгоритмическая задача на использование стека, часто встречающаяся на собеседованиях в IT-компаниях.

Вариант решения задачи на Python с LeetCode

Категория: Алгоритмы.
Название задачи: Valid Parentheses.
Сложность: Легкая.
Статус решения: "Решено".

Условие задачи:
Дана строка s, состоящая только из символов '(', ')', '{', '}', '[' и ']'. Определите, является ли входная строка допустимой.

Входная строка считается допустимой, если:

Каждая открывающая скобка должна быть закрыта скобкой того же типа.

Например, () — допустимо, (] — нет.

Скобки должны закрываться в правильном порядке.

Например, ({}) — допустимо, ({)} — нет.

Каждая закрывающая скобка должна иметь соответствующую открывающую скобку того же типа.

Например, ()[]{} — допустимо, (] — нет.

Решение:


Python

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        # Создаем словарь для соответствия открывающих и закрывающих скобок
        brackets_map = {')': '(', '}': '{', ']': '['}
        # Создаем стек для хранения открывающих скобок
        stack = []
        
        # Проходим по каждому символу в строке
        for char in s:
            # Если символ - закрывающая скобка
            if char in brackets_map:
                # Извлекаем последнюю открывающую скобку из стека
                # Если стек пуст, используем заглушку
                top_element = stack.pop() if stack else '#'
                
                # Проверяем соответствие скобок
                if brackets_map[char] != top_element:
                    return False
            else:
                # Если символ - открывающая скобка, добавляем в стек
                stack.append(char)
        
        # Строка валидна, если стек пуст в конце
        return not stack

Мы рассмотрели пример решения, который был принят и засчитан платформой LeetCode как правильный, но вы можете найти свой способ решения задачи, возможно лучше.

Источник решения: hdhai.com