Reverse Bits

https://leetcode.com/problems/reverse-bitsEasy

Условие

Дано 32-битное беззнаковое целое число n. Необходимо вернуть число, которое получается при переворачивании битов числа n.

Примеры

Input: n = 00000010100101000001111010011100

Output: 964176192 (00111001011110000010100101000000)

Explanation: Перевернутое значение для входного числа в двоичной форме.
Input: n = 11111111111111111111111111111101

Output: 3221225471 (10111111111111111111111111111111)

Explanation: Перевернутое значение для входного числа в двоичной форме.

Решение

fun reverseBits(n: Int): Int {
    var result = 0
    var num = n
    
    // Проходим по всем 32 битам числа
    for (i in 0 until 32) {
        // Сдвигаем результат влево, чтобы освободить место для нового бита
        result = result shl 1
        // Добавляем младший бит числа num в результат
        result = result or (num and 1)
        // Сдвигаем число num вправо, чтобы обработать следующий бит
        num = num ushr 1
    }
    
    return result // Возвращаем перевернутое число
}

Временная сложность

O(1), так как количество итераций всегда фиксировано и равно 32.

Пространственная сложность

O(1), так как используется константное количество дополнительной памяти.