//使用二维数组存储数据,然后合并各个数组,再将合并后数组的空白符号删除,但是时间复杂度较高
class Solution {
public String convert(String s, int numRows) {
if (numRows==1) return s;
char[][] a=new char[numRows][1000];
int j=0;
int k=0;
int flag =0;
int[] b=new int[numRows];
for (int i = 0; i <numRows ; i++) {
b[i]=0;
}
for (int i=0;i<s.length();i++){
a[j][b[j]]=s.charAt(i);
b[j]++;
if (flag==0){
j++;
}
if (flag==1){
j--;
}
if (j==numRows-1){
flag=1;
}
if (j==0){
flag=0;
}
}
String[] z=new String[numRows];
for (int c=0;c<numRows;c++){
z[c]=String.valueOf(a[c]);
z[c]= z[c].replaceAll("[\\u0000]","");
}
for (int i = 1; i <numRows ; i++) {
z[0]=z[0].concat(z[i]);
}
return z[0];
}
}
//改进后,用一个一维字符串数组存储元素,最后拼接在一起,时间复杂度低
public class convert {
public static String convert1(String s,int numRows){
if (numRows==1) return s;
String[] a=new String[numRows];
for (int i = 0; i <numRows ; i++) {
a[i]="";
}
int j=0;
int k=0;
int flag =0;
for (int i=0;i<s.length();i++){
a[j]=a[j].concat(String.valueOf(s.charAt(i)));
if (flag==0){
j++;
}
if (flag==1){
j--;
}
if (j==numRows-1){
flag=1;
}
if (j==0){
flag=0;
}
}
for (int i = 1; i <numRows ; i++) {
a[0]=a[0].concat(a[i]);
}
return a[0];
}