思路:
对于n行的, s中的第i个字符:
对余数进行判断
i%(2n-2) == 0 ----> row0
i%(2n-2) == 1 & 2n-2-1 ----> row1
i%(2n-2) == 2 & 2n-2-2 ----> row2
...
i%(2n-2) == n-1 ----> row(n-1)
对 k = i%(2n-2)进行判断
- k<=n-1时候,s[i]就属于第k行
- k>n-1时候,s[i]就属于2n-2-k行
最后将rows拼接起来就行了
public static String convert(String s, int numRows) {
if(s==null | s.length() ==0 | numRows < 2)return s;
String str = "";
String [] r = new String[numRows];
Arrays.fill(r,"");
for (int i = 0; i < s.length(); i++) {
int k = i%(numRows*2-2);
if(k<numRows-1){
r[k]+=s.charAt(i);
}else {
r[2*numRows-2-k]+=s.charAt(i);
}
}
for (int i = 0; i < r.length; i++) {
if(r[i]!=null)str+=r[i];
}
return str;
}