力扣第六题,Z字形变换
思路:
建立一个StringBuilder数组,当数组索引为0时,添加一个字符后换到下一个StringBuilder,当索引到达边界时转向
此方法省去了空余空间
public String convert(String s, int numRows) {
if (numRows<2) return s;
StringBuilder[] l = new StringBuilder[numRows];
StringBuilder sb = new StringBuilder();//用于存最后结果
for (int i = 0; i < numRows; i++) {
l[i] = new StringBuilder();
}
boolean flag = true;//转向标记,true向下,false向斜上
int f = 0;//当前索引记录
for (int i = 0; i < s.length(); i++) {
if (flag){
//向下推进
l[f++].append(s.charAt(i));
}else {
//向斜上推进
l[f--].append(s.charAt(i));
}
if (f==0){
//切换方向判断
flag=true;
}else if (f==numRows-1){
flag=false;
}
}
for (int i = 0; i < l.length; i++) {
sb.append(l[i]);
}
return sb.toString();
}