# Pitfalls of 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://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/event-5e297d.pdf) · [неявное](https://hey.xyz/posts/16aa1hfg5041622kkcy) · [памяти](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/word-count-tests-mwbjd4oo.md) · [заработало](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az29gRYnKQsY49kM8KsfKSb4wj9yWy/issues/7a67c08cba71c31c495766cd294e6e7490784951) · [ломается](https://articlescad.com/divajilly-nude-onlyfans-leaked-photos-and-twitch-streamer-422389.html) · [классическое](https://rentry.org/gallery-335038) · [задача](https://paper.wf/milafischer89log/kira-pregiato-tits) · [всего](https://ecency.com/@radekvesely4878/akt-921d4d) · [Пустой](https://edu-notes-pages.pages.dev/merge-sort-shagi/) · [строке](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-qyha1-2c40) · [половина](https://articlescad.com/-422130.html) · [сверяется](https://articlescad.com/ipx-811-karen-kaede-adult-photo-gallery-5-images-422050.html) · [примерах](https://ink.synkosmos.org/oz6f88c7/shang-hai-gong-shang-xue-yuan-li-si-ying) · [кладётся](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-kmxya-1g8e) · [крайние](https://dev.to/devnote2319/idempotent-publishing-jobs-84uy2-3em1) · [приведение](https://dev.to/devnote2319/idempotent-publishing-jobs-2q4id-53np) · [пару-тройку](https://news-ctl-posts.hashnode.dev/two-ways-to-solve-anagram-checking-mw8iripp) · [скобка](https://ink.synkosmos.org/oz6f88c7/sks-mm-mtrjm-mqt-mht-skhr-wmthyr) · [неочевидных](https://rentry.org/haley-nicole-sextape-490680) · [считать](https://blogfreely.net/nataliarussell2/auto-rickshaw-sex-video) · [по-разному](https://posts.workshop-hub.workers.dev/merge-sort-oshibki) · [python](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-bb4an-4op6) · [проверки](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/average-oshibki-mwbly3j1.md) · [stack.append(ch](https://dev.to/devnote2319/idempotent-publishing-jobs-zjpgk-3kmp)

