6.ZigZag Conversion

1.問題

  • 將鋸齒狀排列的字串還原

2.想法

  • 將鋸齒狀的序列依正反不同的方向放入numRows個vector中

    • 當碰到頂點時, 反轉放入vector的順序

  • 將vectors所儲存的字元都放入回傳的字串中

  • 當numRows為1時, 直接回傳s

3.程式碼

class Solution {
public:
    string convert(string s, int numRows) {
        if (numRows <= 1) {
            return s;  
        } 
        vector<string> res(numRows, "");
        int step = 1, row = 0;
        for (int i = 0 ; i < s.size(); i++) {
            res[row] += s[i];
            if (row == 0) {
                step = 1;
            }
            if (row == numRows - 1) {
                step = -1;
            }
            row += step;
        }
        string str;
        for (int i = 0 ; i < numRows; i++) {
            for (int j = 0 ; j < res[i].size(); j++) {
                str += res[i][j];
            }
        }
        return str;
    }
};

4.Performance

Last updated