程式語言 - LeetCode - C++ - 6. Zigzag Conversion



參考資訊:
https://www.cnblogs.com/grandyang/p/4128268.html

題目:


解答:

class Solution {
public:
    string convert(string s, int numRows) {
        if (numRows <= 1) {
            return s;
        }

        string r;
        int len = s.size();
        int interval = (numRows << 1) - 2;

        // interval = (numRows * 2) - 2;
        // sub-interval = j + interval - (i * 2)
        for (int i = 0; i < numRows; i++) {
            for (int j = i; j < len; j+= interval) {
                r+= s[j];

                int pos = j + interval - (i << 1);
                if ((i != 0) && (i != (numRows - 1)) && (pos < len)) {
                    r += s[pos];
                }
            }
        }
        return r;
    }
};