剑指 Offer 15. 二进制中1的个数
作者:互联网
题目:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。
解法:位运算
思路:只要n不为0,将n减1,都是把最右边的1变为0,最右边的1后面的0全变为1。把n减1的结果和n做与运算,将把最右边的1变为0,而最右边的1的左边不变
代码:
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int res = 0;
while(n!=0){
n = (n-1) & n;
res++;
}
return res;
}
}
标签:右边,15,Offer,二进制,res,变为,int,public 来源: https://www.cnblogs.com/nickyBlog/p/15262646.html