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


    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-19 20:55
因为业务不是喜欢的,所以就没去,现在实习工作也有很多dirtywork,很后悔,怎么能舔回这个offer啊
flmz_Kk:试一试跟hr舔回来,不过保不齐米的活也有很多dirtywork,只能说不要美化自己没走过的路
点赞 评论 收藏
分享
06-20 14:27
中山大学 C++
rt,day3就开始接需求
星际探神:你就想 你是水货他们都没面出来 他们也水 管他呢
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
05-22 12:44
已编辑
门头沟学院 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务