Leetcode 6. Z字形變換 C++
阿新 • • 發佈:2018-11-25
題目描述
思路
一下做法是一種比較粗暴的做法。通過定義一個二維陣列,記錄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;
}
};