题解 | #求最大连续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);


    }
}
全部评论

相关推荐

WillingLing:查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务