本人先讲自己比较笨的 方法

package homework;
public class Main {
    public String convert(String s, int numRows) {
        int length = s.length(), x = 0, y = 0;
        String arr[][] = new String[numRows][20];
        int i = 0;
        if(numRows==1) {//这个部分是自己后面加上去的 因为numRow==1的话 else部分不适合 
            return s;
        }
        else {  //方法的话 是采用 二维数组进行存放
        while (i < length) {
            arr[x][y] = String.valueOf(s.charAt(i));//先第一步处理竖
            // System.out.print(s.charAt(i)+" ");//查看每一步处理的字符串
            // System.out.println(arr[x][y]);
            i++;
            x++;
            if (x == numRows - 1) {//竖处理完之后 跳入这个循环 处理斜的 处理完斜行后跳出来
                while (x != 0 && i < length) {
                    arr[x][y] = String.valueOf(s.charAt(i));
                    // System.out.print(s.charAt(i)+" ");
                    // System.out.println(arr[x][y]);
                    x--;
                    y++;
                    i++;
                }
            }
        }
        }
        String str = "";//这个没什么好说的就读数据
        for (int i2 = 0; i2 < numRows; i2++) {
            for (int x2 = 0; x2 < 20; x2++) {
                if (arr[i2][x2] != null && arr[i2][x2] != "")
                    str = str + arr[i2][x2];
            }
        }
        return str;
    }
    public static void main(String[] args) {//测试用例
         Main m = new Main();
        String s = "AB";
        int numRows = 1;
        System.out.println(m.convert(s, numRows));
    }
}
class Solution {
    public String convert(String s, int n) {  //首尾两行都是一个等差数列 中间都是两个等差数列相差在一起
        if (n == 1)
            return s;
        StringBuffer sb = new StringBuffer("");
        for (int i = 0; i < n; i++) {
            if (i == 0 || i == n - 1) {
                for (int j = i; j < s.length(); j += 2 * (n - 1)) {
                    sb.append(s.charAt(j));
                }
            } else {
                for (int j = i, k = 2 * (n - 1) - i; j < s.length()
                        || k < s.length(); j += 2 * (n - 1), k += 2 * (n - 1)) {
                    if (j < s.length())
                        sb.append(s.charAt(j));
                    if (k < s.length())
                        sb.append(s.charAt(k));
                }
            }
        }
        return sb.toString();
    }
}