2025年- H136-Lc191.位1的个数(位运算)--Java版
1.题目
2.思路
Integer.toBinaryString(int n) → 把整数 n 转成二进制字符串。
Integer.parseInt(String s, 2) → 把二进制字符串 s 解析成整数。
String.valueOf(int n) → 把整数 n 转成 十进制字符串,
public class BinaryStringExample {public static void main(String[] args) {// 情况1:n 是整数,转换成二进制字符串int n = 13;String binaryStr1 = Integer.toBinaryString(n);System.out.println("整数 " + n + " 的二进制字符串: " + binaryStr1); // 输出: 整数 13 的二进制字符串: 1101// 情况2:n 是二进制形式的字符串,先解析成整数,再转成二进制字符串String nStr = "101"; // 二进制字符串int m = Integer.parseInt(nStr, 2); // 解析成整数String binaryStr2 = Integer.toBinaryString(m); // 再转回二进制字符串System.out.println("二进制字符串 " + nStr + " 转换后: " + binaryStr2);// 输出: 二进制字符串 101 转换后: 101}
}
(1)先把10进制数转换成2进制数
(3)然后从左到右遍历1的个数,并让计数器+1
最后返回计数器的个数
3.代码实现
class Solution {public int hammingWeight(int n) {int cnt=0;// 把整数 n 转成二进制字符串。String s=Integer.toBinaryString(n);for(int i=0;i<s.length();i++){if(s.charAt(i)=='1'){cnt++;}}return cnt;}
}