一、题目描述
求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1。
二、输入描述
输入一个int类型数字。
三、输出描述
输出转成二进制之后连续1的个数。
四、解题思路
使用位运算来实现。
具体思路如下:
- 定义一个计数器 count 和一个最大长度变量 max,初值都为0;
- 遍历给定数字的二进制表示中的每一位,如果该位为 1,则将计数器加 1,否则将计数器清零;
- 在每次计数器加 1 后,将计数器的值与最大长度变量 max 进行比较取较大值;
- 遍历完所有的二进制位后,最大长度变量 max 的值即为所求。
五、JavaScript算法源码
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int num = sc.nextInt();
// 转二进制
String binaryStr = Integer.toBinaryString(num);
// 用 0 分割
String[] strArray = binaryStr.split("0");
// 字符串长度
int result = 0;
for (int i = 0; i < strArray.length; i++) {
if (strArray[i].length() > result) {
result = strArray[i].length();
}
}
System.out.println(result);
}
}
六、效果展示
🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路
🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。