主要的过程:先算出一共有多少列,然后申请一个空的数组,然后遍历字符串,存值输出。具体看下面代码:
class Solution {
public String convert(String s, int numRows) {
int len = s.length();
//斜的有多少个
int slash = n -2;
int colNum = 0;
// 得到这个列数,其实也就是每行的个数
while(len > 0){
len = len-n;
colNum ++;
for(int i=0; i < slash&&len>0; i++){
len--;
cloNum++;
}
}
//建立一个一维数组用来保存数据
char result[] = new Char[n*rowLength];
for(int i=0; i < result.length; i++){
result[i]='';
}
int curCol = 0;//当前处理的列
int index = 0;//控制所有的书
//将字符串写入数组
while(index < s.length()){
// 将每一列的数组写到数组中
for(int i=0; i < n&&index <s.length(); i++){
result[colNum * i + curCol] = s.charAt(index);
index++;
}
curCol++;
// 将斜线的写入数组
for(int i = n-2; i>0&&index < s.length(); i--){
result[colNum*i + curCol] = s.charAt(index);
curCol++;
index++;
}
}
int flag = 0;
for(int i = 0; i < curColumn; i++){
for(int j =0; j < rowLength; j++){
if(flag < result.length){
System.out.print(result[i * curColumn + j]);
}
flag++;
}
System.out.println();
}
}
}