题目描述:
?
?简单的说就是将字符串的每一个字符按照Z字排列之后将每一行字符连接在一起输出
class Solution {
public:
string convert(string s, int numRows) {
//numRows == 1 直接返回原字符串
if(numRows == 1) return s;
//准备一个rows字符串数组存储字符
vector<string> rows(numRows);
//创建一个方向变量
bool down = false;
//遍历字符串
for(int i = 0,row = 0;i < s.length();i++){
rows[row] += s[i];
if(row == 0 || row == numRows - 1)
down = !down;
row += down ? 1 : -1;
}
string ans = "";
for(int i = 0; i < numRows; i++)
ans += rows[i];
return ans;
}
};
????????当numRows的值为1时,直接返回原字符串即可,?当numRows的值 >= 2?时,?创建一个存放numsRows行字符串的字符串数组。循环遍历整个字符串,row为一个游标,控制当前字符应该放到数组的哪一个位置。同时还有一个方向变量down用来控制row的方向。当row == 0时,此时down = true,row游标应如下图所示向下走,反之row向上走,然后将字符串数组的元素连接在一起返回即可。
|