Convert a Number to Hexadecimal
https://leetcode.com/problems/convert-a-number-to-hexadecimal/description/ | Easy |
Условие
Дано целое число num, нужно вернуть его представление в шестнадцатеричном формате. В шестнадцатеричной системе используются цифры от 0 до 9 и буквы от a до f. Для отрицательных чисел следует использовать двухкомплементарное представление (как в 32-битной системе). Нельзя использовать встроенные функции для преобразования числа в шестнадцатеричное представление.
Примеры
Input:
num = 26Output:
“1a”
Input:
num = -1Output:
“ffffffff”
Решение
fun toHex(num: Int): String {
if (num == 0) return "0" // Специальный случай для нуля
val hexChars = "0123456789abcdef" // Шестнадцатеричные символы
var result = StringBuilder()
var n = num
// Выполняем 8 итераций для 32-битного числа, чтобы избежать зацикливания при отрицательных числах
while (n != 0 && result.length < 8) {
val hexDigit = n and 0xF // Получаем последние 4 бита числа
result.append(hexChars[hexDigit]) // Добавляем соответствующий шестнадцатеричный символ
n = n ushr 4 // Выполняем логический сдвиг вправо на 4 бита
}
return result.reverse().toString() // Переворачиваем строку, так как символы добавлялись в обратном порядке
}
Временная сложность
O(1), так как число операций фиксировано (максимум 8 итераций для 32-битного числа).
Пространственная сложность
O(1), так как результат занимает фиксированное количество памяти для 8 символов.