思路
模拟
三个list,按照先加再减的顺序将字符串分到相应的list
注意
考虑特殊情况,如果是1行,自己的判断list变化顺序就错了
代码
public String convert(String s, int numRows) {
if(numRows == 1){
return s;
}
List<List<Character>> lists = new ArrayList<>(numRows);
for (int i = 0; i < numRows; i++) {
lists.add(new ArrayList<>());
}
int index = 0;
int change = 1;
int row = 0;
while (index < s.length()){
if (row == 0){
change = 1;
} else if (row == numRows-1) {
change = -1;
}
lists.get(row).add(s.charAt(index));
index++;
row = row + change;
}
StringBuilder stringBuilder = new StringBuilder();
for (List<Character> list : lists){
for (Character c : list) {
stringBuilder.append(c);
}
}
return stringBuilder.toString();
}
```