首页 > 代码库 > 华为机试-求最大连续bit数
华为机试-求最大连续bit数
题目描述
功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
输入: 一个byte型的数字
输出: 无
返回: 对应的二进制数字中1的最大连续数
输入描述:
输入一个byte数字
输出描述:
输出转成二进制之后连续1的个数
示例1
输入
3
输出
2
程序实现
- import java.util.Scanner;
- /**
- * 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
- *
- * 输入: 一个byte型的数字
- *
- * 输出: 无
- *
- * 返回: 对应的二进制数字中1的最大连续数 输入描述: 输入一个byte数字 输出描述: 输出转成二进制之后连续1的个数 示例1 输入
- *
- * 3 输出
- *
- * 2
- *
- */
- public class Main {
- public static void main(String[] args) {
- @SuppressWarnings("resource")
- Scanner scanner = new Scanner(System.in);
- while (scanner.hasNext()) {
- int num = scanner.nextInt();
- int result = checkMax(num);
- System.out.println(result);
- }
- }
- private static int checkMax(int num) {
- int count = 0;
- boolean start = false;
- int current = 0;
- int flag = 1;
- while (flag != 0) {
- if ((num & flag) != 0) {
- if (!start) {
- start = true;
- current = 1;
- } else {
- current++;
- }
- } else {
- if (count < current) {
- count = current;
- }
- current = 0;
- start = false;
- }
- flag = (flag << 1);
- }
- return count;
- }
- }
华为机试-求最大连续bit数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。