题目链接:https://leetcode.com/problems/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”.

思路:
将字符按Zig形填入map中,然后遍历map数组得到结果

算法:

public String convert(String s, int numRows) {
        char map[][] = new char[numRows][s.length()/(numRows-1)+1];
        int k = 0;// 第几列
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[0].length; j++) {
                    map[i][j]=' ';
            }
        }
        for (int i = 0; i < s.length();) {
            for (int j = 0; j < numRows && i < s.length(); j++, i++) {
                map[j][k] = s.charAt(i);
            }
            k++;
            for (int j = numRows - 2; j >= 1 && i < s.length(); j--, i++, k++) {
                map[j][k] = s.charAt(i);
            }

        }
        StringBuffer res = new StringBuffer();
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[0].length; j++) {
                if (map[i][j]!=' ') {
                    res.append(map[i][j]);
                }
            }
        }
        return res.toString();
    }