题目

6. Z 字形变换

方法:巧立flag

答案

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 < 2)
return s;
//初始化每行的字符串为空
vector<string> rows(numRows);
//立flag驱使每行的字符串增加的方向变化
int i = 0, flag = -1;
for (char c : s) {
rows[i].push_back(c);
//如果遍历到字符串头部和尾部,那么就改变递增方向
if (i == 0 || i == numRows -1)
//下一次则变化方向
flag = - flag;
//每次递增或递减行数
i += flag;
}
string res;
//将每一行的字符串进行相加
for (const string &row : rows)
res += row;
return res;
}
};

__END__