牛客网|求最大连续bit数

题目信息

求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1。本题含有多组样例输入。

输入描述:输入一个byte数字

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

示例输入

3

5

示例输出

2

1

说明

3的二进制表示是11,最多有2个连续的1。
5的二进制表示是101,最多只有1个连续的1。 

编码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MostContinueBit {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String input ;
		
		while ((input = br.readLine()) != null) {
			String binaryNum = Integer.toBinaryString(Integer.valueOf(input));
			int max = 0;
			int index = 0;
			char[] chArr = binaryNum.toCharArray();
			for (int i=0; i<chArr.length; i++) {
				if (chArr[i] == '1') {
					if (index == 0) {
						index = 1;
						
						// 处理1这种只有1个1的特殊情况
						max = Math.max(max, index);
					} else {
						
						// 连续1则index++
						index++;
						
						// 防止连续1后没有0间隔的后续位数,则这里须要将index赋给max
						max = Math.max(max, index);
					}
				} else {
					// 连续1之后有0隔开,这里index置0
					if (index > 0) {
						max = Math.max(max, index);
						index = 0;
					}
				}
			}
			System.out.println(max);		
		}
	}
}

猜你喜欢

转载自blog.csdn.net/magi1201/article/details/114608682