class Solution {
public String convert(String s, int numRows) {
if(s.length() == 0 || numRows == 1) return s;
char[] chars = s.toCharArray();
StringBuilder[] anStringBuilders = new StringBuilder[Math.min(numRows, s.length())];
boolean check = false;
int idx = 1;
for(int i = 0; i < s.length(); ++i) {
idx += check ? 1 : -1;
if(anStringBuilders[idx] == null) anStringBuilders[idx] = new StringBuilder();
anStringBuilders[idx].append(chars[i]);
if(i % (numRows - 1) == 0) check = !check;
}
StringBuilder ans = new StringBuilder(s.length());
for (StringBuilder stringBuilder : anStringBuilders) {
ans.append(stringBuilder);
}
return ans.toString();
}
}
class Solution {
public String convert(String s, int numRows) {
int length = s.length();
if(numRows > length || numRows <= 1)
return s;
char[] zigZagChars = new char[length];
int count = 0;
int interval = 2 * numRows - 2;
for(int i = 0; i < numRows; i++){
int step = interval - 2 * i;
for(int j = i; j < length; j += interval){
zigZagChars[count] = s.charAt(j);
count++;
if(step > 0 && step < interval && j + step < length){
zigZagChars[count] = s.charAt(j + step);
count++;
}
}
}
return new String(zigZagChars);
}
}
原文:https://www.cnblogs.com/fan-jiaming/p/12786115.html