
思路:
直接模拟Z字变换的过程,将每个字符添加到对应的行即可。用一个计数器
来记录当前字符应该添加到哪一行,当
时让
重新置0即可。在这个过程中要设置一个标记位
用来规定方向,一开始是从上到下为每一行中添加字符,当把
置0后,那么方向就要改变,换成从下到上,所以通过
来控制添加的顺序。
package leetcode.problem6;
import java.util.ArrayList;
import java.util.List;
class Solution {
/**
* 直接模拟Z字形变换
* @param s
* @param numRows
* @return
*/
public String convert(String s, int numRows) {
if (numRows <= 1){
return s;
}
List<StringBuilder> list = new ArrayList<>();
for (int i = 0; i < numRows; i++) {
list.add(new StringBuilder());
}
int row = 0;
boolean tag = false;
for (char c : s.toCharArray()){
if (!tag){
list.get(row).append(c);
row++;
}else {
row++;
list.get(numRows - row).append(c);
}
if (row == numRows - 1){
tag = !tag;
row = 0;
}
}
StringBuilder sb = new StringBuilder();
for (StringBuilder stringBuilder : list){
sb.append(stringBuilder);
}
return sb.toString();
}
}

316

被折叠的 条评论
为什么被折叠?



