题解 | #求最大连续bit数#
求最大连续bit数
https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2
主要问题在于:
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); } }