6. ZigZag Conversion
问题:将锯齿形排列的字符串恢复成正常便于阅读的顺序。
自己写的:(java)
public class Solution {
public String convert(String s, int numRows) {
if (s.length() <= 0) {
return "";
}
if (numRows == 1) {
return s;
}
//将字符串切分成数组,有效位从0开始。
String[] strSplitArray = s.split("");
StringBuffer strResult = new StringBuffer();
for(int rowNumber = 0; rowNumber < numRows; rowNumber++) {
if (rowNumber == 0 || rowNumber == numRows-1) {
//第一行和最后一行:前一个位置+(numRows-2)+numRows
for(int i=rowNumber; i<strSplitArray.length; i=i+numRows*2-2) {
strResult.append(strSplitArray[i]);
}
}
else {
for(int i=rowNumber,tag=1; i<strSplitArray.length;tag++) {
//对于中间行需要分为奇列和偶列两种情况
if (tag%2 != 0) {
//对于奇列,也就是前一个位置在第一、三、五..列:前一个位置+(numRows-所在行数)+(numRows-所在行数),这里的所在行数是从1开始的,因此所在行数等于rowNumber+1。
strResult.append(strSplitArray[i]);
i=i+2*numRows-2*rowNumber-2;
}
else {
//对于偶列,也就是前一个位置在第二、四、六..列:前一个位置+(所在行数-2)+所在行数,这里的所在行数是从1开始的,因此所在行数等于rowNumber+1。
strResult.append(strSplitArray[i]);
i=i+2*rowNumber;
}
}
}
}
String newStrResult = strResult.toString();
return newStrResult;
}
}