java 代码实现
java">class Solution {public String convert(String s, int numRows) {//特殊情况处理if(numRows == 1 || s.length() <= numRows) return s;//定义cycleLenint cycleLen = 2 * numRows - 2;//利用 index 下标来跳跃遍历int index = 0; //记录字符串s的字符下标int add = 0; //除了第一行和最后一行以外其他行内两个字符之间的下标间距StringBuilder ret = new StringBuilder();for(int i = 0; i < numRows; i++) { //逐行处理index = i;add = i * 2;while(index < s.length()) {ret.append(s.charAt(index)); //当前行的第一个字符,因为最开始第一列是竖着排列//计算当前行下一个字符的下标间距add = cycleLen - add;//第 0 行和最后一行使用 step 间距, 其余使用 add 间距index += (i == 0 || i == numRows - 1)? cycleLen : add;}}return ret.toString();}
}