将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
最重要的是两个转折点,在不断变化行的过程中给以此给每一行添加元素。当在首行时:接下来就是行就应该给未行走,行需要+;当在未行是则相反给首行走,行需要-
class Solution {
public String convert(String s, int numRows) {
if(numRows < 2) return s;
List<StringBuilder> rows = new ArrayList<StringBuilder>();
for(int i = 0; i < numRows; i++)
rows.add(new StringBuilder());
int i = 0; //代表行,此处代表起始行
int flag = -1; //用于转换
for(char c : s.toCharArray()) {
rows.get(i).append(c);
if(i==0||i==numRows-1)
flag = -flag;
i += flag;
}
StringBuilder res = new StringBuilder();
for(StringBuilder row:rows)
res.append(row);
return res.toString();
}
}