华为OD机考题(HJ62 查找输入整数二进制中1的个数)
前言
经过前期的数据结构和算法学习,开始以OD机考题作为练习题,继续加强下熟练程度。
描述
输入一个正整数,计算它在二进制下的1的个数。
注意多组输入输出!!!!!!
数据范围: 1≤𝑛≤231−1 1≤n≤231−1
输入描述:
输入一个整数
输出描述:
计算整数二进制中1的个数
示例1
输入:
5
输出:2
说明:5的二进制表示是101,有2个1
实现原理与步骤
最简单的可以通过Java自带API实现
实现代码(API)
public class CountBits {
public static void main(String[] args) {
int number = 29; // Example number
int count = Integer.bitCount(number);
System.out.println("Number of 1s in binary representation of " + number + " is: " + count);
}
}
实现代码(逐位检查)
public class CountBits {
public static void main(String[] args) {
int number = 29; // Example number
int count = countBits(number);
System.out.println("Number of 1s in binary representation of " + number + " is: " + count);
}
public static int countBits(int number) {
int count = 0;
while (number != 0) {
count += number & 1; // Check the least significant bit
number >>= 1; // Right shift by 1
}
return count;
}
}
实现代码(位清零算法)
public class CountBits {
public static void main(String[] args) {
int number = 29; // Example number
int count = countBits(number);
System.out.println("Number of 1s in binary representation of " + number + " is: " + count);
}
public static int countBits(int number) {
int count = 0;
while (number != 0) {
number &= (number - 1); // Clear the least significant bit set
count++;
}
return count;
}
}
实现代码(递归算法)
public class CountBits {
public static void main(String[] args) {
int number = 29; // Example number
int count = countBits(number);
System.out.println("Number of 1s in binary representation of " + number + " is: " + count);
}
public static int countBits(int number) {
if (number == 0) {
return 0;
} else {
return (number & 1) + countBits(number >> 1);
}
}
}
原文地址:https://blog.csdn.net/acuteeagle01/article/details/140539324
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!