# Solving and testing bracket sequence validation (part 671d)

Посмотрим на задачу глазами разработчика: сначала решение, затем убеждаемся в его корректности.

## Задача

Проверить, правильно ли расставлены скобки в строке из символов `()[]{}`.

## Решение

```python
def is_balanced(s: str) -> bool:
    pairs = {')': '(', ']': '[', '}': '{'}
    stack = []
    for ch in s:
        if ch in '([{':
            stack.append(ch)
        elif ch in pairs:
            if not stack or stack.pop() != pairs[ch]:
                return False
    return not stack


print(is_balanced("([]{})") )
```

## Как это работает

Это классическое применение стека: открывающая скобка кладётся наверх, закрывающая сверяется с вершиной. Если в конце стек пуст — последовательность верна.

## Пример работы

```text
True
```

## Сложность

O(n) по времени, O(n) по памяти в худшем случае.


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

**Читайте также:**

[работает](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/binary-search-oshibki-mvgtacf3.md) · [stack.append(ch](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [памяти](https://isc.sans.edu/diary.html/33214#comment) · [Проверить](https://archive88383.mataroa.blog/blog/hasiimo-chaturbate-asian-camgirl-hd-private-show/) · [задачу](https://discuss.tchncs.de/post/65444563) · [сразу](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2JHUxyp2K2mYcr4FYxXusBDxKGrM/issues/5bc3cb7f9b247d942b7a272965f1efc4981b6f93) · [минимум](https://jaflysilve.freeflarum.com/d/4655-4655-trinity-jane-onlyfans-leaked-photos-and-videos-collection) · [наглядные](https://blogfreely.net/catherine-vasilyev70/roe-163) · [крайние](https://privatebin.devol.it/?d4041d91239b98b7#9w7qbHF1xj9ik2HpjqWF51LWoTiqAF2f3ngdwZP7uqUi) · [базовая](https://paper.wf/katyaneumann68log/mika-raun-porn) · [правках](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ultimate-surrender-cfe056.pdf) · [pairs[ch](https://sway.cloud.microsoft/lHReULlL6fVzyqvd) · [открывающая](https://writefreely.ethibox.fr/oz8c420a/pornnet2) · [работы](https://sway.cloud.microsoft/LdhGYpMGQVppnqkw) · [времени](https://privatebin.devol.it/?fd3114d011567c08#5SRB6ESjZeXL92qB9r5XStRAfeSxWAnpCvs5tpvCshpU) · [разработчика](https://blog.spikyhair.club/oz80e9f7/verygsyboys) · [задач](https://hey.xyz/posts/1ka855t0yj0m345r2n4) · [последовательность](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/stickyspoodge-63277a.pdf) · [затем](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/snapgod-mega-fbbd40.pdf) · [удобны](https://jaflysilve.freeflarum.com/d/4693-4693-pureloli-3d-porn) · [return](https://radicle.network/nodes/seed.pipapo.org/rad%3Az3gg87fHqeHPGbGRAwMh3cktSJ2Az/issues/22bc79cd613c2d5eb9544698d2f47257057abb9c) · [конце](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-ac3832.pdf) · [Посмотрим](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [ошибки](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [вызова](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/boyst0021-133990.pdf) · [Решение](https://discuss.tchncs.de/post/65444246) · [Проверка](https://privatebin.devol.it/?332d61129bd96a6e#CAMvRzKiNTKHSXVqgXE68P7gDzPShZ84AnpGwpF6ErPq)

