题目描述
思路
一下做法是一种比较粗暴的做法。通过定义一个二维数组,记录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;
}
};