leet-code/src/main/java/leetcode/editor/cn/NumberOf1Bits.java
huangge1199@hotmail.com cd73435799 191:位1的个数
2021-07-19 23:19:16 +08:00

85 lines
2.1 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。
//
//
//
// 提示:
//
//
// 请注意,在某些语言(如 Java没有无符号整数类型。在这种情况下输入和输出都将被指定为有符号整数类型并且不应影响您的实现因为无论整数是有符号的
//还是无符号的,其内部的二进制表示形式都是相同的。
// 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。
//
//
//
//
// 示例 1
//
//
//输入00000000000000000000000000001011
//输出3
//解释:输入的二进制串 00000000000000000000000000001011 共有三位为 '1'。
//
//
// 示例 2
//
//
//输入00000000000000000000000010000000
//输出1
//解释:输入的二进制串 00000000000000000000000010000000 共有一位为 '1'。
//
//
// 示例 3
//
//
//输入11111111111111111111111111111101
//输出31
//解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
//
//
//
// 提示:
//
//
// 输入必须是长度为 32 的 二进制串 。
//
//
//
//
//
//
//
// 进阶:
//
//
// 如果多次调用这个函数,你将如何优化你的算法?
//
// Related Topics 位运算
// 👍 364 👎 0
package leetcode.editor.cn;
//191:位1的个数
class NumberOf1Bits {
public static void main(String[] args) {
//测试代码
Solution solution = new NumberOf1Bits().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int count = 0;
while (n != 0) {
if ((n & 1) == 1) {
count++;
}
n >>>= 1;
}
return count;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}