【华为OJ】【084-求最大连续bit数】

【华为OJ】【算法总篇章】


【华为OJ】【084-求最大连续bit数】

【工程下载】


题目描述

功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
输入: 一个byte型的数字
输出: 无
返回: 对应的二进制数字中1的最大连续数

输入描述

输入一个byte数字

输出描述

输出转成二进制之后连续1的个数

输入例子

3

输出例子

2

算法实现

import java.util.Scanner;

/**
 * Author: 王俊超
 * Date: 2016-01-04 09:44
 * Declaration: All Rights Reserved !!!
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
        while (scanner.hasNext()) {
            int b = scanner.nextInt();
            System.out.println(countBit(b));
        }

        scanner.close();
    }

    private static int countBit(int b) {
        int max = 0;
        int cur = 0;
        b &= 0xFF;
        for (int i = 0, and = 1; i < 8; i++) {
            // 如果第i位为1
            if ((b & and) != 0) {
                cur++;
                if (cur > max) {
                    max = cur;
                }
            } else {
                cur = 0;
            }

            and <<= 1;
        }

        return max;
    }
}
时间: 2024-11-10 01:01:26

【华为OJ】【084-求最大连续bit数】的相关文章

华为OJ平台——求最大连续bit数

题目描述: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字    输出: 对应的二进制数字中1的最大连续数 思路: 通过移位运算可以一次判断每一位的0.1值,然后通过统计可以得到结果 import java.util.Scanner; //byte 的范围是-128~127 public class MaxContinueOne { public static void main(String[] args) {

华为机试-求最大连续bit数

题目描述功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字 输出: 无 返回: 对应的二进制数字中1的最大连续数输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例1输入 3输出 2 程序实现 import java.util.Scanner; /** * 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 * * 输入: 一个b

求最大连续bit数

import java.util.Scanner; public class GetContinuous1 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); byte num = scan.nextByte(); String str = Integer.toBinaryString(num); String[] strArr = str.split("0"); int l

【华为OJ】【060-自守数】

[华为OJ][算法总篇章] [华为OJ][060-自守数] [工程下载] 题目描述 自守数是指一个数的平方的尾数等于该数自身的自然数.例如:252 = 625,762 = 5776,93762 = 87909376. 请求出n以内的自守数的个数 接口说明 /** * 功能: 求出n以内的自守数的个数 * * 输入参数:int n * 返回值:n以内自守数的数量. */ public static int calcAutomorphicNumbers(int n) { /*在这里实现功能*/ re

【华为OJ】【074-素数伴侣】

[华为OJ][算法总篇章] [华为OJ][074-素数伴侣] [工程下载] 题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密. 现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成"素数伴侣",挑选方案多 种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组"素数伴侣",而将2和5.6和13 编组将得到两组"素数伴侣"

【华为OJ】【030-整数与IP地址间的转换】

[华为OJ][算法总篇章] [华为OJ][030-整数与IP地址间的转换] [工程下载] 题目描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数. 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数 10 00001010 0 00000000 3 00000011 193 11000001 组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:1

【华为OJ】【048-参数解析】

[华为OJ][算法总篇章] [华为OJ][048-参数解析] [工程下载] 题目描述 在命令行输入如下命令: xcopy /s c:\ d:\, 各个参数如下: 参数1:命令字xcopy 参数2:字符串/s 参数3:字符串c:参数4: 字符串d:请编写一个参数解析程序,实现将命令行各个参数解析出来. 解析规则: 1.参数分隔符为空格 2.对于用""包含起来的参数,如果中间有空格,不能解析为多个参数. 比如在命令行输入xcopy /s "C:\program files&quo

华为OJ: 求小球落地5次后所经历的路程和第5次反弹的高度

学过自由落体就好,初中物理题. import java.util.Scanner; public class reboundFiveTimes { public static void main(String args[]){ Scanner input=new Scanner(System.in); int k=input.nextInt(); double high=k/32.0; double distance=k*23/8.0; System.out.println(distance);

【华为OJ】【089-DNA序列】

[华为OJ][算法总篇章] [华为OJ][089-DNA序列] [工程下载] 题目描述 一个DNA序列由A/C/G/T四个字母的排列组合组成.G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次 数除以总的字母数目(也就是序列长度).在基因工程中,这个比例非常重要.因为高的GC-Ratio可能是基因的起始点. 给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列. 输入描述 输入一个string型基因序列,和int型子串