public class Solution {
public String convert(String s, int nRows) {
if(nRows < 0 || s == null){
return null;
}
if(s.length() == 0 || s.length() == 1 || nRows == 1 || s.length() <= nRows){
return s;
}
int process = 2 * nRows - 2;
int numOfColumns = (s.length() / process) * (nRows - 1);
if(s.length() % process != 0){
if(s.length() % process > nRows){
numOfColumns = numOfColumns + ((s.length() % process) - nRows) + 1;
}else{
numOfColumns = numOfColumns + 1;
}
}
char[][] result = new char[nRows][numOfColumns];
int loop = 0;
while(loop < s.length()){
int curColumn = (loop / process) * (nRows - 1);
if(loop % process > nRows - 1){
curColumn = curColumn + ((loop % process) - (nRows - 1));
int curRow = nRows - ((loop % process) - (nRows - 1)) - 1;
result[curRow][curColumn] = s.charAt(loop);
}else{
result[loop % process][curColumn] = s.charAt(loop);
}
loop++;
}
StringBuilder resultString = new StringBuilder();
for(int i = 0; i < nRows; i++){
for(int j = 0; j < numOfColumns; j++){
if(result[i][j] != '\u0000'){
resultString.append(result[i][j]);
}
}
}
return resultString.toString();
}
}
没有评论:
发表评论