Даны два неотрицательных целых числа в шестнадцатеричной записи — строками.
Числа могут быть сколь угодно длинными, поэтому перевести их в int/uint64 не
получится. Верните их сумму тоже в 16-ричной записи. math/big не использовать.
var ErrInvalidHex = errors.New("invalid hex number")
// AddHex складывает два 16-ричных числа, записанных строками.
func AddHex(a, b string) (string, error)
Формат
- Вход: непустая строка из цифр
0-9, a-f, A-F. Ведущие нули допустимы.
Префикс 0x, знак, пробелы и пустая строка — ошибка, для которой
errors.Is(err, ErrInvalidHex).
- Выход: строчные цифры, без ведущих нулей; ноль —
"0".
Примеры
"1", "f" → "10"
"ff", "1" → "100"
"A", "5" → "f"
"0000", "0" → "0"
"ffffffffffffffff", "1" → "10000000000000000" // больше uint64
"12g", "1" → ошибка ErrInvalidHex
Ограничения: длина каждого числа до 10⁶ цифр. Ожидается O(n + m).
Устно: как обобщить решение на произвольное основание? Чем это отличается от
сложения двоичных строк?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.