随机输入一字符串S,字符串S包含二维数组的列数N+字符串A,其中二维数组行数为存储字符串的所需最小正整数,将字符串A按行存储二维数组中,按列方向可读输出另一个字符串B,并输出列向字符串B。列字符串结尾多余的空格需去除。
/**
* 输入描述:
* 输入字符串S,为包含二维数组的列数N和字符串A,
* 二维数组列数N为数字字符,行向字符串A为数字的字符串,
* 且字符串不会包括分号,二维数组列数N和字符串A用分号隔开。
* 输出描述:
* 输出列向字符串
*/
import java.util.Scanner;
public class Main{
public static void stringColumnPrint(String str){
String arr[] = str.split(";");
int n = Integer.valueOf(arr[0]);//n表示列数
String str2 = arr[1];
int m = str2.length()/n; //计算行数
if(str2.length()%n!=0){
m = m +1;
}
char chars[][] = new char[m][n];//字符串存入二维数组按m行n列存入,数组对应的i和j
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if((i*n +j)<str2.length()){
chars[i][j] = str2.charAt(i*n+j);
}else {
chars[i][j] = ' ';
}
}
}//字符串二组数组按列输出,即n行m列,数组对应的j和i
//列输出,原来的行变为列,原来的列变为原来的行,对一个i和j位置也要变
String result = "";
for(int i= 0;i<n;i++){
for(int j=0; j<m;j++){
result +=chars[j][i];
}
}
System.out.println(result.trim());//使用trim()去除最后空格,trim()是去除前后空格
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
stringColumnPrint(sc.nextLine());
}
}