**Контекст:** задача LeetCode #3, топ-3 по популярности на собесах. Проверяет знание техники **sliding window** — универсального подхода для задач с «окном», «подотрезком», «подмассивом».
## Условие
Дана строка `s`. Найди **длину самой длинной подстроки без повторяющихся символов**.
**Определение подстроки:** непрерывный фрагмент строки (в отличие от подпоследовательности, где символы могут быть несмежными).
## Примеры
[см. код в задании]
## Подводный камень: "dvdf"
**Важно:** когда встречается повтор, `left` должен переместиться за **предыдущее вхождение** повторяющегося символа, а не просто `left += 1`.
Для `"dvdf"`:
- В момент повторной встречи `d` (индекс 2), `left=0`
- Если сделать `left = char_index['d'] + 1 = 1`, окно: `"vdf"` → длина 3 ✓
## Ограничения
- 0 ≤ len(s) ≤ 50 000
- s может содержать **любые ASCII символы** (цифры, буквы, пробелы, спецсимволы)
- **Unicode** опционально (обсудить с интервьюером)
## Требования
1. Реализовать `length_of_longest_substring(s: str) -> int`
2. Указать **time и space complexity**
3. Обработать edge cases
4. Объяснить технику **sliding window** — это главное на собесе
5. **(Bonus)** Реализовать версию, возвращающую саму подстроку
algorithms sliding-window hash-map strings
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: algorithms, sliding-window, hash-map, strings.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 482 Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания