美文网首页
剑指 Offer 15 二进制中1的个数

剑指 Offer 15 二进制中1的个数

作者: itbird01 | 来源:发表于2021-12-25 00:06 被阅读0次
题目.png

题意:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '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;
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 15 二进制中1的个数

      本文链接:https://www.haomeiwen.com/subject/ldblqrtx.html