题目
思路
- 首先注意,每一次都是从row1到rown,然后再从rown回到row1。
- 所以很明显,从row1往下移到rown,然后让其反向加到row1,再接着反向,直到加完即可。
代码
public String convert(String s, int numRows) {
if(numRows<2) return s;
List<StringBuilder> list = new ArrayList<>();
for(int i=0;i<numRows;i++) list.add(new StringBuilder());
int i=0;
int flag = -1;
for(char c:s.toCharArray()){
list.get(i).append(c);
if(i==0 || i==numRows-1) flag = -flag;
i+=flag;
}
StringBuilder ans = new StringBuilder();
for(StringBuilder sb:list){
ans.append(sb);
}
return ans.toString();
}