題目: LeetCode - 6. ZigZag Conversion

題目說明

給一個字串,依照要求 ( ZigZag ) 將字串轉換。題目其實就是每次都往下換行,到底再往上換行,到頂再往下不斷反覆直到 s 用盡。

解題思路

使用陣列儲存每一行的字符,遍歷陣列,依照位置放入陣列中的字串,最後再把所有字串串接起來即可。

參考解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
string convert(string s, int numRows)
{
if(numRows == 1) return s;
int n = s.length(), j = -1;
bool reverse = false;
string res;
vector<string> v(numRows);
for(auto& c : s)
{
if(!reverse)
{
v[++j] += c;
if(j >= numRows - 1) reverse = true;
}
else
{
v[--j] += c;
if(!j) reverse = false;
}
}
for(auto& str : v) res += str;
return res;
}
};