题目一开始我都没看明白,输入到底是二进制串还是十进制整数,后来分析明白了才知道输入的是十进制整数,题目描述的有点不清晰,最后还专门给了个误导人的提示,害。
去百度参考了一下十进制转二进制的方法,选择了用移位来完成。原文链接在这里:https://www.cnblogs.com/vsign/p/7290594.html
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int count = 0;
//移位实现十进制转二进制
for (int i=31;i>=0;i--){
count+=n>>>i&1;
}
return count;
}
}