leetcode6-z字形变换

题目原文链接

由于它有numRows行,所以我们就定义每行对应一个string,把逻辑分为两步,第一步,把全有字母的一列,从上往下依次输出到output的每个string里面,第二步,将Z字形中间部分的字符从下往上输出到output[numRows-2]到output[1]里面。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class  {
public:
string convert(string s, int numRows) {
int i = 0, j;
string result;
vector<string> output(numRows);
while(i < s.length()){
for(j = 0; j < numRows && i < s.length(); j++){
output[j] += s[i++];
}
for(j = numRows - 2; j > 0 && i < s.length(); j--){//输出Z中间的字符
output[j] += s[i++];
}
}
for(i = 0; i < numRows; i++) //合并numRows个数组
result += output[i];
return result;
}
};