Цифры на городских табличках

тема: Строки · уровень: базовый

Условие

В городе Текстоград на табличках и объявлениях часто вперемешку написаны буквы, пробелы и цифры. Дежурный по району решил посчитать «силу цифр» объявления: он складывает значения всех отдельных цифр, которые встречаются в тексте.

Например, в строке Дом 12, подъезд 3 он складывает 1 + 2 + 3.

Формат ввода

Одна строка s — текст объявления.

Формат вывода

Выведите одно число — сумму всех цифр (символов '0'..'9') в строке.

Ограничения

Пример

Ввод:

Bus 24 arrives at 19:05

Вывод:

21

Как решать — идея подхода

Приём: Линейный проход по строке + проверка символа

Ключевое наблюдение: нужно суммировать не числа вроде 12 или 105, а именно отдельные символы-цифры. То есть "12" даёт 1 + 2, а не 12.

Подходит линейный проход: длина строки до 2000, можно просто посмотреть каждый символ и решить, добавлять его или нет. Проверка «это цифра?» делается сравнением диапазона '0'..'9' или методом ch.isdigit() (но с ним осторожно, см. грабли).

План решения:

Сложность: O(n) по времени, где n — длина строки, и O(1) по памяти.

Частая ошибка: пытаться выделять «числа» и суммировать их целиком (тогда пример 19:05 дал бы 24, а нужно 1+9+0+5=15). Ещё грабля: ch.isdigit() в Unicode считает цифрами не только '0'..'9', поэтому для этой задачи надёжнее проверка диапазона.

Разберись руками

Есть строка объявления: "Bus 24 arrives at 19:05". Нужно найти в ней все символы-цифры и сложить их как числа (2+4+1+9+0+5).

Идея: Просмотреть строку посимвольно, отбирать только символы-цифры и накапливать их сумму, превращая каждую цифру в число.

Решить задачу с автопроверкой на Python →

Куда дальше