# Solving and testing bracket sequence validation (part 0d8a)

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

## Задача

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

## Решение

```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  # и второй случай
```

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

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

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

[работает](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/digit-sum-shagi-mvaze1fj.md) · [Сложность](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/angelica-and-veronica-part-1-striptease-9e8992.pdf) · [убеждаемся](https://privatebin.devol.it/?6510e62bbbb74565#B4W7sWecFKGm5zVSumviUTdjdV5Z1TvD1p3pNiLzWAcw) · [stack.pop](https://privatebin.devol.it/?941fd509bae84f64#3jsF6dV1D97KEhUZon6qMh3fVzqUReSCfyRqGQ6AGH53) · [сначала](https://statics.pancake.vn/web-media-264/ed/7d/10/61/7f9fbad1a845747a706e9fb83825c466049fa6d7e6840b95d9d34624.pdf) · [стека](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-cf3c34.pdf) · [кладётся](https://articlescad.com/3-379254.html) · [строке](https://news-ctl-posts.hashnode.dev/pitfalls-of-string-reversal-part-76f7) · [вызова](https://jaflysilve.freeflarum.com/d/1414-1414-fellatrix-breeding-mount-suzie-q-hentai-comic) · [Проверить](https://montage15627.mataroa.blog/blog/doraemon-nobita-shizuka-sex-animated-hentai-gallery/) · [открывающая](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/mikimakey-c593d1.pdf) · [нескольких](https://sway.cloud.microsoft/uk3W8HErr2iKXHb8) · [символов](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/alxy-star-videos-b90698.pdf) · [сразу](https://imexplorer.net/%E6%A1%83%E6%B9%AF%E3%81%86%E3%81%8C%E3%81%84+asmr?f=instapaper) · [верна](https://news-ctl-posts.hashnode.dev/writing-tests-for-the-sieve-of-eratosthenes-part-398d) · [конце](https://pen.absturztau.be/ozd8c0fe/ci-duo-cui-mian) · [случай](https://paste2.org/PaePNKHO) · [случайной](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [проверять](https://r34.wiki/angelyeah%E7%81%AB%E5%BD%B1?f=linkcentre) · [ошибки](https://kappa.lol/nPiEnd) · [памяти](https://visuals35932.mataroa.blog/blog/bokep-indo-enak-banget-tukeran-istri/) · [примерах](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [крайние](https://gall.dcinside.com/mgallery/board/view/?id=thekpop&no=64456) · [глазами](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/jackerman-porn-new-ea4850.pdf) · [видно](https://leaks.im/april+carter+onlyfans+leak?f=linkcentre) · [Такой](https://blog.spikyhair.club/oz23c982/music-playing-wallpaper) · [скобка](https://privatebin.devol.it/?2bc4270c5066b5f1#FgNJw9u9FnfThD8xPpGT5Mapo2HEARqCXhPYoxWoHwx1) · [проверка](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [становится](https://team.writefreely.dev/oza70399/ogurayuna-yucul)

