LeetCode-109-Bits binarios inversos (simple)

1. Descripción

Invierta los bits binarios de un entero sin signo de 32 bits dado.

2. Ejemplo

Entrada: 00000010100101000001111010011100
Salida: 00111001011110000010100101000000
Explicación: La cadena binaria de entrada 00000010100101000001111010011100 representa un entero sin signo 43261596,
por lo que devuelve 964176192, y su representación binaria es 00111001011110000010100101000000.

Entrada: 11111111111111111111111111111101
Salida: 10111111111111111111111111111111
Explicación: La cadena binaria de entrada 111111111111111111111111111101 representa un entero sin signo 4294967293,
por lo que devuelve 3221225471 cuya representación binaria es 10111111111111111111111111111111111111111111111101

Sugerencia:
tenga en cuenta que en algunos idiomas (como Java), no hay un tipo de entero sin signo. En este caso, tanto la entrada como la salida se designarán como tipos de enteros con signo y no deberían afectar su implementación, porque la representación binaria interna es la misma independientemente de si el entero tiene o no signo.
En Java, el compilador usa la notación de complemento a dos para representar enteros con signo. Por lo tanto, en el ejemplo 2 anterior, la entrada representa un entero con signo -3 y la salida representa un entero con signo -1073741825.

Avanzado:
si llama a esta función varias veces, ¿cómo optimizará su algoritmo?

3. Análisis

Invertir una cadena binaria es esencialmente lo mismo que invertir una cadena. Puede usar directamente todos los métodos para invertir una cadena. (Omitido: recursividad, bucle inverso, push y pop, etc.)
Sin embargo, debido a la particularidad del problema, puede usar clases integradas.

La clase contenedora Integer encapsula el método de invertir directamente la cadena binaria entera y devolver el entero invertido

clase Nombre del método Caracteristicas
Entero estático int reverso (int i) Devuelve el valor obtenido al invertir el orden de los bits en la representación binaria en complemento a dos del valor int especificado.

4. Código

public class Solution {
    
    
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
    
    
        return Integer.reverse(n);
    }
}

5. Verificación

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/PursueLuo/article/details/108734133
Recomendado
Clasificación