Преобразование числа из базы A в базу B

Опубликовано: 22 Сентября, 2022

Даны два положительных целых числа A и B и строка S размера N, обозначающая число в базе A , задача состоит в том, чтобы преобразовать данную строку S из базы A в базу B .

Примеры:

Input: S = “10B”, A = 16, B = 10
Output: 267
Explanation: 10B in hexadecimal (base =16) when converted to decimal (base =10) is 267.

Input: S = “10011”, A = 2, B = 8
Output: 23
Explanation: 10011 in binary (base =2) when converted to octal (base = 8) is 23. 

Подход: Системы счисления — это метод представления чисел в архитектуре компьютерной системы. Архитектура компьютера поддерживает следующие системы счисления:

  • Двоичная система счисления (основание 2): Двоичная система счисления состоит только из двух цифр, 0 и 1 . Основание этой системы счисления равно 2 .
  • Восьмеричная система счисления (основание 8): Восьмеричная система счисления состоит из 8 цифр в диапазоне от 0 до 7 .
  • Десятичная система счисления (основание 10): Десятичная система счисления состоит из 10 цифр в диапазоне от 0 до 9 .
  • Шестнадцатеричная система счисления (основание 16): Шестнадцатеричная система счисления состоит из 16 цифр от 0 до 9 и алфавитов от A до F. Он также известен как буквенно-цифровой код, так как состоит как из цифр, так и из букв.

Чтобы преобразовать число из базы A в базу B , идея состоит в том, чтобы сначала преобразовать его в его десятичное представление, а затем преобразовать десятичное число в базу B.

Преобразование из любого основания в десятичное: десятичный эквивалент числа «str» в основании «base» равен 1 * str[len — 1] + base * str[len — 2] + (base) 2 * str[len – 3] + …

Преобразование из десятичного числа в любое основание:
Десятичное число «inputNum» можно преобразовать в число по основанию «base» путем многократного деления inputNum по основанию и сохранения остатка. Наконец, переверните полученную строку, чтобы получить желаемый результат.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N)
Вспомогательное пространство: O(N)