---
round: 1
ticket_no: 26
source_no: 30
slug: add-binary
topic: Math / String
difficulty: Easy
leetcode_id: 67
attempted: true
score: 2
verdict: partial
reviewed_at: 2026-09-12
---

# Билет 26 — Add Binary

## Условие (как предъявлено)

Даны две бинарные строки `a` и `b`. Нужно вернуть их сумму в виде бинарной строки.

```
Input:  a = "11",   b = "1"     →  "100"
Input:  a = "1010", b = "1011"  →  "10101"
```

## Ответ

> Так, здесь мы применяем сложение в столбик. Просто деление от остатка берем двоичное. То есть, если у нас единица с нулем сравнимся, мы записываем единицу, если ноль с нулем, ноль. Если единица с единицей, то мы получается пишем ноль. Но у нас ещё остаток переводится. Соответственно, при сложении следующих цифр мы уже учитываем, что у нас ещё есть остаточки. И вот таким образом мы пишем всю строку.

## Разбор

**Что верно:** сложение в столбик с переносом в двоичной системе, перенос учитывается в следующем разряде — верно.

**Что упущено и ошибки:** не проговорены разная длина строк (когда указатель вышел за границу — бит 0) и остаточный перенос в конце, который добавляет ещё один разряд; не названа сложность O(n + m); граничные случаи («0» + «0», ведущие нули).

**Эталонная идея:** два указателя с конца: sum = carry + a_bit + b_bit, carry = sum / 2, digit = sum % 2; после цикла добавить carry, если он есть; reverse.

**Сложность:** время O(n + m), память O(n + m)

**Критерии:** идея ✅ · структура данных ✅ · сложность ❌ · граничные случаи ⚠️


**Разбор задачи:** [`../../algo-solutions/02-extra/06-math-string-simulation/30-add-binary.md`](../../algo-solutions/02-extra/06-math-string-simulation/30-add-binary.md)
