第六题Z形转换,是一道找规律的题。
如果是第一行和最后一行,每两个字符中间相差2*numRows-2。
其他行,竖着的字符之间相差2*numRows-2,斜着的字符为j+2*numRows-2-2i(i为行数,j为当前竖着的字符在原字符串的位置)。
class Solution {
public String convert(String s, int numRows) {
if(s == null || s.length()==0 || numRows <=0) return "";
if(numRows == 1) return s;
int l=2*numRows-2;
StringBuilder res = new StringBuilder();
for (int i=0;i<numRows;i++){
for (int j=i;j<s.length();j+=l){
res.append(s.charAt(j));
if (i!=0 && i!=numRows-1){
int temp=j+l-2*i;
if (temp<s.length())
res.append(s.charAt(temp));
}
}
}
return res.toString();
}
}