最近公共祖先_求最大连续bit数_参数解析

最近公共祖先

最近公共祖先

image-20220501113207189

import java.util.*;
public class LCA {
    public int getLCA(int a, int b) {
        //每次都让较大的节点先找父节点,
        // 直到 a和b相遇!就是公共节点!
        while(a!=b){
            if(a>b){
                a/=2;
            }else{
                b/=2;
            }
        }
        return a;

    /*    int[] array1 = new int[a];
        int[] array2 = new int[b];
        int i = 0;
        while(a!=0){
            array1[i++] = a;
            a/=2;
        }
        int j = 0;
        while(b!=0){
            array2[j++] = b;
            b/=2;
        }
        for(int k = 0;k<i;k++){
            for(int z = 0;z<j;z++){
                if(array1[k]==array2[z]){
                    return array1[k];
                }
            }
        }
        return array1[i-1]; */
    }
}

求最大连续bit数

求最大连续bit数

image-20220501113357914

//按位与,右移!
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        //将整数转换成2进制字符串!
        String str = Integer.toBinaryString(n);
        //分割子串,以0分割!
        String[] strs = str.split("0");
        int max = 0;
        for(int i = 0;i<strs.length;i++){
            if(strs[i].length()>max){
                max = strs[i].length();
            }
        }
        System.out.println(max);
        /*int countMax = 0;//保存最大连续1的个数!
        int count = 0;//暂时保存连续1的个数
        while(n!=0){
            if((n&1)==1){
                //按位与& 结果为1 说明这里为1
                count++;
            }else{
                countMax = Math.max(count,countMax);  
                count = 0;
            }
            n = n>>1;
        }
        //可能连续最大的1次数在二进制首!
        countMax = Math.max(count,countMax);  
        System.out.println(countMax); */
    }
}

参数解析

参数解析

image-20220501122715736

//方法一:
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        //xcopy /s "C:\\program files" "d:\" 分割后,空格元素的后一个元素就是""分割的元素! 所以这个就不需要分割了!
        int flag = 1;//定义标志位,标志 "
        int count = 0;
        ArrayList<StringBuilder> result = new ArrayList<>();
        StringBuilder sb = new StringBuilder();
        //  l "b:\" /kzv /yar   // u "a e i o u" r
        for(int i = 0;i< str.length();i++){
            char ch = str.charAt(i);
            if(ch=='"'){
                flag^=1;
               continue;
            }
            if(ch!=' '){
               sb.append(ch); 
            }
            if(ch==' '&&flag==0){//空格 且标志位为 0 说明这是""里的空格!
                sb.append(ch); 
            }else if(ch==' '&&flag==1){
                //需要分割!
                result.add(sb);
                sb = new StringBuilder();
            }
        }
          result.add(sb);
        System.out.println(result.size());
        for(int i = 0;i<result.size();i++){
            System.out.println(result.get(i));
        }
    }
}
//方法二:
//通过 \n 字符实现打印换行!
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        StringBuffer sb = new StringBuffer();
        int len = 0;
        int quotaNum = 0;//这里作为"标志位!
        // xcopy /s "C:\\program files" "d:\"
        for (int i = 0; i < str.length(); i++){
            if (str.charAt(i) == '"'){ //标志位++!
                quotaNum++; continue;
            }
            if (str.charAt(i) != ' '){//不是空格就保存!
                sb.append(str.charAt(i));
            } else if (quotaNum % 2 == 0){//说明这里不是""里的空格!
                sb.append('\n'); //用 \n 换行符分割!
                len++; //长度++!
            }else { //""里的空格,保存!
                sb.append(' ');
            }
        }
        System.out.println(len+1); //最后一个字符子串没有计算!
        System.out.println(sb.toString()); //打印结果!

    }
}
#笔试题#
全部评论
你会求最大连续bit数吗?
点赞 回复 分享
发布于 2022-08-28 12:51 河南

相关推荐

球Offer上岸👑:可能是大环境太差了 太卷了 学历也很重要 hc也不是很多 所以很难
点赞 评论 收藏
分享
(黑话警告⚠️:hc=岗位数量,&nbsp;mt=导师,&nbsp;ld=直属领导,&nbsp;cr=代码审查)25年1月,我加入了字节某前端团队,并期望能在这里待到秋招并尝试转正。然而,就在上周,ld&nbsp;找我1v1,告诉我,我的能力和团队预期不太匹配,并和我劝退。晴天霹雳吗?肯定是有的。那一刻,脑子里嗡嗡作响,各种情绪翻涌。但冷静下来想想,这几个月,自己在能掌控的范围内,确实有不少地方做得不尽如人意。所以,我想把这段不算成功的经历复盘一下,希望能给同样在努力转正的你提个醒,避开我踩过的坑。一、ld&nbsp;的要求要注意刚进组时,ld就和我聊过转正的事。我当时发问:“咱们这儿有hc&nbsp;吗?”&nbsp;ld没直接回答,只是说:“看能力,能力到了...
牛客上的彭于晏:过来人告诉你,入职后要做的第一件事儿不是说主动找活儿做,你要先学会融入团队,摸清ld的性格,投其所好。然后才是展示你的能力,能力上可以说技术或者业务,以业务能力为主,技术能力为辅。优先保证自己对业务需求的开发保证质量效率,然后再谈技术的问题,不要你觉得啥啥啥不行就想着整体优化了(发现校招生最喜欢干这事儿),我工作快5年了发现搞这种的最后都没啥好的结果,产出没有还引入新的bug,校招或者实习的水平看到的问题别人看不到嘛?为什么别人不去搞?浪费时间还没收益的事儿不要去做,技术上的能力体现在对于一个新需求,在不符合现在业务发展的架构设计上,你能拿出好的技术方案同时能考虑到后续业务发展逐渐将技术架构引入合理的架构,这是一个漫长的过程而不是一次性的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务