思路:
代码:
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, 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();
}
}
自己手撸代码:
fun convert(s: String, numRows: Int): String {
//只能排一行一列直接返回
if (numRows == 1 || s.length < numRows){
return s
}
val res = mutableListOf<MutableList<Char>>()
for (row in (0 until numRows)) {
res.add(mutableListOf())
}
var i = 0
var flag = 1
for (item in s.indices) {
res[i].add(s[item])
if (i == numRows - 1) {
flag = -1
} else if (i == 0) {
flag = 1
}
i += flag
}
return res.flatten().joinToString("")
}