1.需要
- 関数を記述します。入力は符号なし整数(バイナリ文字列の形式)であり、桁が「1」であるバイナリ式の桁数を返します。
例1:
入力:00000000000000000000000000001011
出力:3
説明:入力バイナリー文字列00000000000000000000000000001011では、合計3ビットが「1」です。
2ビット演算
2.1思考分析
- この質問のアイデアは、2進数を逆にすることです:https://blog.csdn.net/Sruggle/article/details/113888614アイデアのリンク、つまり、1の発生数を低いものから高い;
2.2コードの実装
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複雑さの分析
- 時間計算量はO(1)です。
- スペースの複雑さはO(1)です。