Niuke.com |連続するビットの最大数を見つける

トピック情報

バイト番号に対応する2進数で最大の連続する1の数を見つけます。たとえば、2進数の3は00000011で、最大は2つの連続するものです。この質問には、複数のサンプル入力のセットが含まれています。

説明の入力:バイト番号を入力します

出力の説明:出力がバイナリに変換された後の連続する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