最近公共祖先_求最大连续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 河南

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务