import unittest

Алгоритм проверки скобок корректен для строк из скобок; ошибка находится в тесте: для «{[]}» ожидается True, а не False. Поэтому последний assert падает.

Короткий ответ

Что ответить на собеседовании

Алгоритм проверки скобок корректен для строк из скобок; ошибка находится в тесте: для «{[]}» ожидается True, а не False. Поэтому последний assert падает.

Подробный разбор

Ответ с пояснениями

Условие

import unittest class Solution: def isvalid(self, s:str) -> bool: matching_brackets = { ")": "(", "]": "[", "}": "{", }

    stack: list[str] = []

    for bracket in s:
        if bracket in "([{":
            stack.append(bracket)
            continue

        if bracket not in matching_brackets:
            return False

        if not stack or stack[-1] != matching_brackets[bracket]:
            return False

        stack.pop()

    return not stack

class SolutionTest: def init(self): self.Solution = Solution()

def run(self):
    test_cases = [
        ("", True),
        ("()", True),
        ("(){}[]", True),
        ("(({}))", True),
        ("(", False),
        (")", False),
        ("(((", False),
        ("{[]}", False),
    ]
    for brackets, expected in test_cases:
        actual = self.Solution.isvalid(brackets)

        assert actual == expected, (
            f"Ошибка для {brackets!r}"
            f"Хотели получить {expected}, а получили {actual}"
        )
    print(f"Все тесты пройдены: {len(test_cases)}")

if name == "main": SolutionTest().run()

Ответ

Алгоритм проверки скобок корректен для строк из скобок; ошибка находится в тесте: для «{[]}» ожидается True, а не False. Поэтому последний assert падает.

Стек хранит открывающие скобки, а закрывающая обязана соответствовать вершине. После обхода стек должен быть пустым. Время O(n), память O(n). Исправьте тест на ('{[]}', True) и добавьте неверные случаи вроде '([)]' и '{[}'. Импорт unittest здесь не используется: SolutionTest — собственный runner, а не наследник unittest.TestCase.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее