方法一、找规律解法
按行访问
class Solution {
public String convert(String s, int numRows) {
if(s.length() <= numRows || numRows == 1){
return s;
}
int n = 2*numRows - 2;
String result = new String();
for(int i = 0 ; i < numRows; i++){
int j = 2*i;
//字符串中字符的索引
int index = i;
while(index < s.length()){
result += String.valueOf(s.charAt(index));
if(n - j != 0){
j = n - j;
}
index += j;
}
}
return result;
}
}
二、
import java.util.ArrayList;
import java.util.List;
class Solution {
public String convert(String s, int numRows) {
if (numRows == 1) return s;
List<StringBuilder> rows = new ArrayList<>();
for (int i = 0; i < Math.min(numRows, s.length()); i++)
rows.add(new StringBuilder());
int curRow = 0;
boolean goingDown = false;
for (char c : s.toCharArray()) {
rows.get(curRow).append(c);
if (curRow == 0 || curRow == numRows - 1) goingDown = !goingDown;
curRow += goingDown ? 1 : -1;
}
StringBuilder ret = new StringBuilder();
for (StringBuilder row : rows) ret.append(row);
return ret.toString();
}
}