最近公共祖先_求最大连续bit数_参数解析
最近公共祖先
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数
//按位与,右移!
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); */
}
} 参数解析
//方法一:
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()); //打印结果!
}
}
#笔试题#
