Задача: сложить двоичные числа, представленные в виде строк
Решаем задачи, которые дают программистам на собеседованиях в IT-компаниях. Сегодня складываем двоичные числа.
Иллюстрация: Polina Vari для Skillbox Media
Сергей Голицын
Senior Java Developer в Covalent Inc. и преподаватель. Больше семи лет в Java-разработке. В свободное время судит хакатоны и делится опытом с начинающими программистами. Пишет статьи для «Хабра» и Medium. Ведёт телеграм-каналы «Полезные ссылки около Java» и Cracking code interview.
Условие. Даны два двоичных числа в виде строк a и b. Нужно вернуть их суммы в виде строки.
Ввод и вывод. Пример 1
Ввод и вывод. Пример 2
Задача и решения взяты из Telegram-канала Сергея Cracking code interview.
Решение
Чтобы решить эту задачу, мы должны начать с конца и посимвольно складывать цифры. Создадим два указателя — для каждой из строк. На старте они будут ссылаться на последние символы строк. Теперь просто пойдём с конца строк к началу, уменьшая значения указателей на один.
Главная проблема здесь — не забыть о числах, которые переносятся в следующий разряд. А ещё нужно помнить, что одна строка может быть длиннее другой. В этом случае придётся добавить оставшиеся символы из более длинной строки к результату.
Чтобы работать со строками было удобно, я использовал StringBuilder. В Java это самый эффективный способ для операций на изменение строк.
Вот как алгоритм будет реализован на Java:
Результаты
Временная сложность: O(n) — так как мы перебирали все символы в строках.
Ёмкостная сложность: O(1) — нам нужно заранее определённое количество памяти (максимальный размер памяти — две строки).