1. Demanda
- Escribe una función, la entrada es un entero sin signo (en forma de cadena binaria) y devuelve el número de dígitos de la expresión binaria cuyos dígitos son '1'.
Ejemplo 1:
Entrada: 00000000000000000000000000001011
Salida: 3
Explicación: En la cadena binaria de entrada 00000000000000000000000000001011, un total de tres bits son '1'.
Operación de dos bits
2.1 Análisis de pensamiento
- La idea de esta pregunta es invertir los dígitos binarios : https://blog.csdn.net/Sruggle/article/details/113888614 Un enlace en la idea, es decir, contar el número de ocurrencias de 1 de menor a alto;
2.2 Implementación del código
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int res = 0;
for(int i = 0; i < 32; i++) {
if((n & 1) == 1) {
res++;
}
n = n >> 1;
}
return res;
}
}
2.3 Análisis de complejidad
- La complejidad del tiempo es O (1);
- La complejidad del espacio es O (1);