1. Demande
- Écrivez une fonction, l'entrée est un entier non signé (sous la forme d'une chaîne binaire) et renvoie le nombre de chiffres dans l'expression binaire dont les chiffres sont «1».
Exemple 1:
Entrée: 00000000000000000000000000001011
Sortie: 3
Explication: Dans la chaîne binaire d'entrée 00000000000000000000000000001011, trois bits au total sont «1».
Opération à deux bits
2.1 Analyse de la pensée
- L'idée de cette question est d' inverser les chiffres binaires : https://blog.csdn.net/Sruggle/article/details/113888614 Un lien dans l'idée, c'est-à-dire compter le nombre d'occurrences de 1 de bas à haut;
2.2 Implémentation du code
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 Analyse de complexité
- La complexité temporelle est O (1);
- La complexité spatiale est O (1);