题目

ZigZag Conversion


算法

http://www.cnblogs.com/springfor/p/3889414.html

  • 找规律:发现所有行的重复周期都是2nRows-2;对于首行和末行之间的行,还会额外重复一次,重复的这一次距离本周期起始字符距离是:2nRows-2-2*i

代码


class Solution {
public:
    string convert(string s, int nRows) {
        if (nRows <= 1) return s;
        string res = "";
        int size = 2 * nRows - 2;
        for (int i = 0; i < nRows; ++i) {
            for (int j = i; j < s.size(); j += size) {
                res += s[j];
                int tmp = j + size - 2 * i;
                if (i != 0 && i != nRows - 1 && tmp < s.size()) res += s[tmp];
            }
        }
        return res;
    }
};

results matching ""

    No results matching ""