6 ZigZag Conversion

题目描述:

 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this:
    (you may want to display this pattern in a fixed font for better legibility)


    P    A    H   N
    A P L S I  I G
    Y     I     R
    And then read line by line: "PAHNAPLSIIGYIR"
    Write the code that will take a string and make this conversion given a number of rows:


    string convert(string text, int nRows);
    convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".


代码:

public String convert(String s, int numRows) {
        int len = s.length();
        if (len == 0 || numRows < 2){
            return s;
        }

        String result = "";
        int step = 2 * numRows - 2;
        for (int i = 0; i < numRows; i++){
            for (int j = i; j < len; j += step){
                result += s.charAt(j);

                if (i > 0 && i < numRows - 1){
                    //非首行
                    int last = j + step - 2 * i;
                    if (last < len){
                        result += s.charAt(last);
                    }
                }
            }
        }
        return result;
    }


你可能感兴趣的:(LeetCode,conversion,ZigZag)