Пройдите символы и прибавляйте разность c − '0'. Для контракта с ASCII-цифрами это даёт числовое значение каждого символа без разбора всей строки в число.
Вычисление суммы цифр, содержащихся в строке
Пройдите символы и прибавляйте разность c − '0'. Для контракта с ASCII-цифрами это даёт числовое значение каждого символа без разбора всей строки в число.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Метод получает строку, в которой находятся только цифры, и должен вернуть сумму всех этих цифр.
Вход: "123" Выход: 6
class Solution {
public static Integer calculateSum(String numericString) {
return null;
}
}
Ответ
Пройдите символы и прибавляйте разность c − '0'. Для контракта с ASCII-цифрами это даёт числовое значение каждого символа без разбора всей строки в число.
public static Integer calculateSum(String numericString) {
java.util.Objects.requireNonNull(numericString);
int sum = 0;
for (int i = 0; i < numericString.length(); i++) {
char c = numericString.charAt(i);
if (c < '0' || c > '9') throw new IllegalArgumentException("Not a digit");
sum = Math.addExact(sum, c - '0');
}
return sum;
}
Время O(n), память O(1). Пустая строка даёт 0; если она недопустима, добавьте валидацию. Math.addExact защищает от переполнения для очень длинного входа. Знаки и десятичные разделители по условию не поддерживаются.