百度笔试-20241015
百度麻将第二题,这样做有问题吗?
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String str = in.nextLine();
System.out.println(rotateStr(str));
}
}
public static String rotateStr(String str) {
char[] charArray = str.toCharArray();
Boolean[] bs = new Boolean[charArray.length];
Arrays.fill(bs, false);
int g = 2;
LinkedList<Character> list = new LinkedList<>();
for (int i = 1; i < bs.length; i+=2) {
list.add(charArray[i]);
bs[i] = true;
}
while (list.size() != charArray.length) {
g = 2 * g;
int start = 0;
for (int i = 0; i < bs.length; i++) {
if (!bs[i]){
start = i;
break;
}
}
for (int i = start; i < charArray.length; i+=g) {
list.add(charArray[i]);
bs[i] = true;
}
}
StringBuilder sb = new StringBuilder();
for (Character c : list) {
sb.append(c);
}
return sb.toString();
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String str = in.nextLine();
System.out.println(rotateStr(str));
}
}
public static String rotateStr(String str) {
char[] charArray = str.toCharArray();
Boolean[] bs = new Boolean[charArray.length];
Arrays.fill(bs, false);
int g = 2;
LinkedList<Character> list = new LinkedList<>();
for (int i = 1; i < bs.length; i+=2) {
list.add(charArray[i]);
bs[i] = true;
}
while (list.size() != charArray.length) {
g = 2 * g;
int start = 0;
for (int i = 0; i < bs.length; i++) {
if (!bs[i]){
start = i;
break;
}
}
for (int i = start; i < charArray.length; i+=g) {
list.add(charArray[i]);
bs[i] = true;
}
}
StringBuilder sb = new StringBuilder();
for (Character c : list) {
sb.append(c);
}
return sb.toString();
}
}
全部评论
相关推荐
05-30 00:12
江西服装学院 Java 头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享