主要问题在于:
1.连续1的个数:
1)使用位运算符,判断1的连续个数;
2)使用0进行分割,判断分割后字符串的length;
2.如何求最大个数
1)将个数放入list中,使用list.sort(Comparator.reverseOrder())进行逆序排序,输出第一个值;
2)使用Math.max(),实时对比个数,遇到1则count++,遇到0则count=0;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
int input=scan.nextInt();
String str=Integer.toBinaryString(input);
List<Integer> list=new LinkedList<>();
//依次判断str,将1的连续个数放入set中
// int count=0;
// char[] arr=str.toCharArray();
// if(arr[0]=='1') count++;
// if(arr.length==1||arr[1]=='0') list.add(count);
// for(int i=1;i<arr.length;i++){
// if(arr[i]=='1'){
// if(arr[i-1]=='1'){
// count++;
// }else if(arr[i-1]=='0'){
// count=1;
// }
// if(i<arr.length-1 && arr[i+1]=='0'){
// list.add(count);
// }else if(i==arr.length-1){
// list.add(count);
// }
// }
// }
// list.sort(Comparator.reverseOrder());
// System.out.println(list.get(0));
//将String用0分割成数个字符串
String[] inputs=str.split("0+");
int max=0;
for(String item:inputs){
max=Math.max(max,item.length());
}
System.out.println(max);
}
}import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
int input=scan.nextInt();
String str=Integer.toBinaryString(input);
List<Integer> list=new LinkedList<>();
//依次判断str,将1的连续个数放入set中
// int count=0;
// char[] arr=str.toCharArray();
// if(arr[0]=='1') count++;
// if(arr.length==1||arr[1]=='0') list.add(count);
// for(int i=1;i<arr.length;i++){
// if(arr[i]=='1'){
// if(arr[i-1]=='1'){
// count++;
// }else if(arr[i-1]=='0'){
// count=1;
// }
// if(i<arr.length-1 && arr[i+1]=='0'){
// list.add(count);
// }else if(i==arr.length-1){
// list.add(count);
// }
// }
// }
// list.sort(Comparator.reverseOrder());
// System.out.println(list.get(0));
//将String用0分割成数个字符串
String[] inputs=str.split("0+");
int max=0;
for(String item:inputs){
max=Math.max(max,item.length());
}
System.out.println(max);
}
}

京公网安备 11010502036488号