- 简单题:注意的点:
- 相当于是求最大连续子串 动归思想, 也可以用下面简单的方式完成。
- 注意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);
}
}
}