class Solution {
public:
string convert(string s, int numRows) {
if(numRows == 1)
return s;
//先要将 z 字行变换后的数组搭建出来,之后再考虑变换的事情。
vector<string> row(min(numRows,int(s.size())));
int curRow = 0;
bool goDown = false;
for(char c:s){
row[curRow] += c;//获取当前位置的字符串
if(curRow == 0 ||curRow == numRows - 1)
goDown = !goDown;
//妙啊,到点了就换行
//信号的到点的转变是我所做的不好的
curRow += goDown ? 1 : -1;
}
string ret;
for(int i = 0;i < numRows;++i){
ret += row[i];
}
return ret;
}
};
//将字符从左往右,排列成一个向左旋转 90° 的 z 字。
//之后再将每一行的字母逐行输出
//我想到的方法是遍历多次,依次计算出每一行的字母的间隔然后然后隔着间隔去找字母
//第一行两个字母下标的间隔是 2n-2
//其实不用计算出间隔啦,直接从上到下,再从下到上依次将字符存入数组当中就可以,最后再将数组里的字符串整合之后输出。