# Solving and testing bracket sequence validation (part dcb2)

Решение без тестов быстро ломается, поэтому добавим к задаче простые проверки.

## Задача

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

## Решение

```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://radicle.network/nodes/index.radicle.garden/rad%3Az237N8uJbkKUotfaoH1QcifR4GDLm/issues/bb50a3c3baaf4c0c3b04b936a07c7ef1f125af50) · [строке](https://statics.pancake.vn/web-media-264/e9/7b/93/1e/3e9746e774945df9702dc0dbe77b57e506d4720230c14bec42ed6a2c.pdf) · [требуют](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/stickyspoodge-ee28ed.pdf) · [включая](https://radicle.network/nodes/seed.pipapo.org/rad%3AzCWWTLjmQsM96aFfqnoMJr3ciifG/issues/7f1252962f1cb84648167b51c9d42ed070ed46cf) · [крайние](https://ecency.com/@zdenekpospi7879/post-7b653e) · [расставлены](https://paper.wf/mariabraun72log/mian-fei-aituo-yi-gong-ju-tui-jian-2025zui-re-men-zai-xian-qu-yi-ying-yong) · [вызова](https://theyellowpet.pro/emarrb+only+fans?f=instapaper) · [работает](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [памяти](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [тестов](https://blogfreely.net/nataliarussell2/onlyfans-esin-cepni) · [базовая](https://paste2.org/kFV5VEBD) · [стека](https://embase.org/91%E7%89%A9%E6%98%AF%E4%BA%BA%E9%9D%9E?f=instapaper) · [ошибки](https://paper.wf/laurahoffmann84log/amcik-turbanli) · [сразу](https://blogfreely.net/nathannazarov26/julia-and-lilu-oil-massage-sensual-body-care-session) · [задач](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/factorial-shagi-mvguylvs.md) · [stack](https://rimworld.gallery/m/random/t/16286) · [времени](https://radicle.network/nodes/index.radicle.garden/rad%3Az6rnwQZyfJp1RNzxoSZFJCgoDw9r/issues/7bd72fff53b57af5b04dfb836bf4b310e32bdb80) · [удобны](https://duboismaria0.wixsite.com/my-site-1/post/%E6%9A%97%E9%BB%91-%E7%8E%8B%E5%AD%90) · [примерах](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [закрывающая](https://marieroux757.overblog.fr/2026/10/post-5.html) · [второй](https://paste2.org/F1UcPgz1) · [Хорошая](https://blogfreely.net/nathannazarov26/lei-ye-gv-xi-lie-ying-shi-zi-yuan-ji-rou-ti-yu-sheng-nan-mo-xie-zhen) · [проверять](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-b46e73.pdf) · [pairs](https://paper.wf/irenakeller65380/feh-galvao-nude-onlyfans-cosplay-dildo-tease-and-more) · [False](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/x-aac38d.pdf) · [Проверить](https://hey.xyz/posts/1mvnxghrb1bjqjjthee) · [правильно](https://sway.cloud.microsoft/X5Y3IERoFY87zD4N) · [проверка](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-1bd1f3.pdf)

