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


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

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

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

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

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

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

[минимум](https://jamesd716.wixsite.com/my-site-1/post/spip-sarka-spip-collectif-gpl-texte-votre-message-guide) · [Хорошая](https://kappa.lol/voz1yG) · [применение](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/karolinaorient-51aec7.pdf) · [верна](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-168el-1d7i) · [накроем](https://gallery.triplemedia.al/shadbse?f=instapaper) · [проверять](https://pdfhost.io/v/mDTmF6UHhH) · [Сложность](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/11/ay-en-elik-onlyfans-eca8c8.pdf) · [Пример](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-grl1o-1ene) · [наверх](https://privatebin.devol.it/?c191493436f638e1#A4Qhuc7JDDjLxj8oNoEz8d5wsBZLHyuByJEUPMdTHyiK) · [стека](https://dev.to/devnote2319/idempotent-publishing-jobs-3g6b7-2g3k) · [учебных](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/brackets-shagi-mwdx552r.md) · [ошибки](https://rentry.org/gallery-798906) · [правках](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/11/pooja-hegde-porn-888fc5.pdf) · [Тесты](https://spaces.hightail.com/receive/S2lXPiW6NQ) · [включая](https://dev.to/devnote2319/idempotent-publishing-jobs-84uy2-3em1) · [python](https://blogfreely.net/sarah-yakovlev/qi-luo-luo-xiang-zhi) · [проверка](https://pdfhost.io/v/CAtfNMshVL) · [работает](https://statics.pancake.vn/web-media-264/ca/bb/26/ac/cc6bab39a1dcd877200ed984dd3ae2afd2651fb5612d84fd5b39b5d6.pdf) · [кодом](https://workshopeb1353.notepin.co/merge-sort-dva-sposoba) · [строке](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-hraaf-36m9) · [стиль](https://radicle.network/nodes/seed.pipapo.org/rad%3Az7sNH79ACQMgt8y9wFF1dHsNWUuA/issues/93f2bb30e724f21657b98012039dd6542cb3bee3) · [наглядные](https://dev.to/devnote2319/keeping-link-blocks-stable-across-platforms-j6lgw-4jcc) · [памяти](https://sway.cloud.microsoft/TQ1JKvqWZFiqJcnn) · [Проверка](https://workshop-hub.gitbook.io/workshop-hub-docs-1/poshagovyi-razbor-sortirovka-puzyrkom) · [расставлены](https://discuss.tchncs.de/post/65440183)

