# 6. ZigZag Conversion

## Description

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P   A   H   N
A P L S I I G
Y   I   R


And then read line by line: "PAHNAPLSIIGYIR"

Write the code that will take a string and make this conversion given a number of rows:

string convert(string text, int nRows);


convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

## Analysis

class Solution {
public:
string convert(string s, int numRows) {
if(numRows==1||numRows>s.size()||numRows==s.size())
return s;
vector<string> str(numRows);
int step=1,row=0;
for(int i=0;i<s.size();++i){
str[row].push_back(s[i]);
if(row==0)
step=1;
else if(row==numRows-1)
step=-1;
row+=step;
}
s.clear();
for(int j=0;j<str.size();++j)
s.append(str[j]);
return s;
}
};


P.S 如果你对ZigZag Pattern的理解有疑惑的话，请记住这道题是这样定义ZigZag Pattern的。

/*n=numRows
Δ=2n-2    1                           2n-1                         4n-3
Δ=        2                     2n-2  2n                    4n-4   4n-2
Δ=        3               2n-3        2n+1              4n-5       .
Δ=        .           .               .               .            .
Δ=        .       n+2                 .           3n               .
Δ=        n-1 n+1                     3n-3    3n-1                 5n-5
Δ=2n-2    n                           3n-2                         5n-4
*/


### 学籍管理系统文档

#### 北邮教务系统评教脚本

Published on September 17, 2017

#### 72.Edit distance

Published on September 17, 2017