
题意:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。
解题思路
解法1:
1.将int转换为二进制字符串
2.遍历字符串字符,发现1,则res++,最终res即为所求结果
解法2:
1.观察可知,n & n - 1 就是把n的二进制数的最后一个1,变为0,也就是说,每次执行一次n = n & n - 1
,就是把其中的1变为0,那么一直循环,知道n为0,也就是所求的结果
解题遇到的问题
无
后续需要总结学习的知识点
无
##解法1
public class Solution {
public int hammingWeight(int n) {
String string = Integer.toBinaryString(n);
int ans = 0;
for (int i = 0; i < string.length(); i++) {
if (string.charAt(i) == '1') {
ans++;
}
}
return ans;
}
}
##解法2
public class Solution {
public int hammingWeight(int n) {
int ans = 0;
while (n != 0) {
n = n & n - 1;
ans++;
}
return ans;
}
}
网友评论