我试图理解为什么下面的代码不能解决这个问题。
我们正在传递位(0和1)作为参数。如果我不使用位运算,而是首先将整数转换为chararray,然后对其进行迭代以计算“1”的编号,然后返回它,为什么它不起作用?
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int count=0;
for(char c:String.valueOf(n).toCharArray())
{
if('1'==c)
++count;
}
return count;
}
}
3条答案
按热度按时间iyr7buue1#
你在数
1
在十进制字符串中,您可以通过Integer.toBinaryString()
```public int hammingWeight(int n) {
int count=0;
for(char c:Integer.toBinaryString(n).toCharArray())
{
if('1'==c)
++count;
}
}
nbnkbykc2#
我们不必将n转换为字符串,这将很好地传递:
8ftvxx2r3#
考虑到这是java,我很惊讶没有人提到jdk方法
Integer.bitCount(i)
的java.lang.Integer
.