Java实现
核心思想: 根据参数numRows将字符串划分成numRows行,遍历字符串过程中,依次将字符添加进对应行中,但需注意的是,字符添加进入首行或尾行后需要改变方向,最后将各行字符串依次拼接成完整字符串。
class Solution {
public String convert(String s, int numRows) {
if(numRows == 1)//行数为1,直接返回s
return s;
List<StringBuilder> rows = new ArrayList<StringBuilder>();
for(int i = 0; i < numRows; i++)
rows.add(new StringBuilder());
int curRow = 0, flag = -1;//flag用于改变行的方向
for(char ch : s.toCharArray()){
rows.get(curRow).append(ch);//依次将字符添加进对应行中
if(curRow == 0 || curRow == (numRows - 1))//字符添加进入首行或尾行后需要改变方向
flag = -flag;
curRow += flag;
}
//拼接各行字符串
StringBuilder res = new StringBuilder();
for(StringBuilder row : rows)
res.append(row);
return res.toString();
}
}