• 简单题:注意的点:
  • 相当于是求最大连续子串 动归思想, 也可以用下面简单的方式完成。
  • 注意max和sum的变化条件:
  • 当当前为0时,归置sum=0;
  • 当为1时,需要处理 如果当前是最后一位 或者下一位是0 ,重置max。
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();

            // 十进制 转为二进制
            String str = Integer.toBinaryString(n);

            int max = 0;
            int sum = 0;
            for (int i = 0; i < str.length(); i++) {
                if (Character.getNumericValue(str.charAt(i)) == 1) {
                    sum++;
                    if (i == str.length() -1 || Character.getNumericValue(str.charAt(i + 1)) == 0) {
                        max = Math.max(sum, max);
                    }
                } else sum = 0;
            }

            System.out.println(max);
        }
    }
}