题目
有一批箱子(形式为字符串,设为 str),
要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。
例如:箱子 ABCDEFG,空地宽度为 3,摆放结果如图:
则输出结果为:
AFG
BE
CD
输入
输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串 str,表示箱子;
后面部分为数字 n,表示空地的宽度。例如: ABCDEFG 3
输出
箱子摆放结果,如题目示例所示
A F G
B E
C D
示例1
输入
ABCDEFG 3
输出
AFG
BE
CD
备注:
请不要在最后一行输出额外的空行
str只包含字母和数字,
示例2
输入HELLOWORLD 4
输出HRL
EOD
LW
LO
注:本文章,我认为题目表达的意思是这样,路线为z字,宽度n为 行高。我仅是根据我的理解来编写的代码,如有偏颇,请担待!
java代码:
package odTest;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class binZigzag {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] inputs = scanner.nextLine().split(" ");
int wide = Integer.parseInt(inputs[1]);
String[] lineArray = new String[wide];
Arrays.fill(lineArray, "");
Integer[] sortList = new Integer[wide];
for(int j=0;j<sortList.length;j++) {
sortList[j]=j;
}
int midKey = 0;
boolean flag = true;
for(int i=0;i<inputs[0].length();i++) {
lineArray[sortList[midKey]] = lineArray[sortList[midKey]]+inputs[0].charAt(i);
if((i+1)%wide==0&&flag) {
Arrays.sort(sortList, Collections.reverseOrder());
midKey = 0;
flag = false;
continue;
}
if((i+1)%wide==0&&!flag) {
Arrays.sort(sortList);
midKey = 0;
flag = true;
continue;
}
midKey++;
}
Arrays.stream(lineArray).forEach(m->{
System.out.println(m);
});
}
}