# Common mistakes in bracket sequence validation

Разберём решение и подводные камни — их обычно не видно в готовом коде из учебника.

## Задача

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

## Решение

```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) по памяти в худшем случае.


## Частые ошибки

1. **Не обрабатывать крайние случаи.** Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается.
2. **Смешивать типы данных.** Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов.
3. **Писать код без проверки на маленьких примерах.** Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.

Если решение заработало с первого раза — всё равно сверьтесь со списком ошибок: половина багов рождается при доработках.

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

[решённой](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-m878a-415b) · [ведут](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/sw-653-switch-2169f1.pdf) · [стека](https://pastelink.net/khtiqwqy) · [считать](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-168el-1d7i) · [верна](https://discuss.tchncs.de/post/65445150) · [по-разному](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-ex8x1-55li) · [stack.append(ch](https://yakihonne.com/article/naddr1qvzqqqr4gupzq7f32kygwzrjj88q2npssjmkffsfyc7kc4ndk85609dcmkfnhdqjqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkyd3nxe3xxef3956k2vf3956rwef495ukyvr994jxxcfcvc6rsvrpxsur26w9280) · [крайние](https://radicle.network/nodes/index.radicle.garden/rad%3Az3NkCws8pC6mBKA8zzwpYFoJix5mF/issues/af216615f537d83ac050e9bd8619b292d2e70a37) · [обычно](https://sway.cloud.microsoft/7I06AV3uPwT8zK46) · [учебника](https://pen.absturztau.be/ozedf3dc/bella-mona-nude) · [случае](https://workshopeb1353.notepin.co/binary-search-tests) · [источник](https://expert-research-mimir.com/princess+leia+vore?f=instapaper) · [вершиной](https://news-ctl-posts.hashnode.dev/two-ways-to-solve-factorial-computation-mw6xjyvy) · [первого](https://news-ctl-posts.hashnode.dev/step-by-step-quicksort-mw7jnnhr) · [проверки](https://airolicity.in/finance-jobs-in-airoli-mindspace?f=instapaper) · [Решение](https://ymcatexasyg.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/buse-ayd-n-if-a-4aecb6.pdf) · [рождается](https://news-ctl-posts.hashnode.dev/understanding-the-fibonacci-sequence-mw85hyhh) · [открывающая](https://mycommunitycalendars.com/wp-content/uploads/event-manager-uploads/event_banner/2026/11/mc-mirella-transando-no-privacy-cbd1c3.pdf) · [значениях](https://jaflysilve.freeflarum.com/d/21025-21025-tai-wan-qing-nian-chuang-ye-jia) · [видно](https://dev.to/devnote2319/keeping-link-blocks-stable-across-platforms-ntgpa-1p8h) · [скобки](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-pf169-5gma) · [Писать](https://statics.pancake.vn/web-media-264/80/d2/7f/f9/b3b75ee3a7390f3876a460134636354a06bd10f99e4a1f87312a71a5.pdf) · [равно](https://dev.to/devnote2319/idempotent-publishing-jobs-oujtx-5dao) · [скобка](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2upfjYv1wPJVUoKrinwQ1LW5MYkv/issues/12aa6fab5c1994b683b531d95adfa08c1b239cbf)

