1. 程式人生 > >Leetcode 6. Z字形變換 C++

Leetcode 6. Z字形變換 C++

題目描述

在這裡插入圖片描述

思路

一下做法是一種比較粗暴的做法。通過定義一個二維陣列,記錄Z型變換後的結果,之後再將結果讀出。在程式中,只需要定義一個變數(ln)用於記錄是哪一行該插入。如果到達最上端,則下一次就開始向下一行插入。如果到達最下端,那麼下一次就開始向上一行插入。

解答

class Solution {
public:
    string convert(string s, int numRows) {
        if(s.empty() || numRows<=1) return s;
        vector<vector<char
>> temp(numRows); int ln=0; int flag=0; for(int i=0; i!=s.size();++i) { temp[ln].push_back(s[i]); if(numRows-1==ln) { flag=1; } if(0==ln) { flag=0; } if
(0==flag) { ++ln; } if(1==flag) { --ln; } } int sum=0; string res; for(int i=0; i<numRows && sum<s.size();++i) { for(auto c : temp[i]) {
res+=c; sum++; } } return res; } };