# 6. ZigZag Conversion

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".

class Solution {
public:
string convert(string s, int r) {
if(r == 1) return s;
string res;
int n = s.size();
for(int i = 0; i < r; i++){
int start = i, interval1 , interval2;
int gap = 2 * r - 2;
if(i == 0 || i == r - 1) interval1 = interval2 = gap;
else{
interval1 = gap - 2 * i;
interval2 = gap - interval1;

}
int k = 0;
while(1){
int pos = start + interval1 * ((k + 1) / 2) + interval2 * (k / 2);
if( pos < n){
res.push_back(s[pos]);
k++;
}
else
break;
}
}
return res;
}
};

class Solution {
public:
string convert(string s, int numRows) {
vector<string> vs(numRows, "");
int n = s.length(), i = 0;
while (i < n) {
for (int j = 0; j < numRows && i < n; j++)
vs[j].push_back(s[i++]);
for (int j = numRows - 2; j >= 1 && i < n; j--)
vs[j].push_back(s[i++]);
}
string zigzag;
for (string v : vs) zigzag += v;
return zigzag;
}
};

#### Leetcode_6_ZigZag Conversion

2014-11-23 09:45:55

#### 6. ZigZag Conversion Leetcode Python

2015-01-28 02:21:14

#### [Leetcode]6. ZigZag Conversion @python

2016-01-13 00:32:16

#### leetcode 6 ZigZag Conversion C++

2016-06-28 10:52:31

#### [LeetCode] 006. ZigZag Conversion (Easy) (C++/Java/Python)

2015-02-28 00:13:47

#### 【LeetCode】LeetCode——第6题：ZigZag Conversion

2016-04-19 10:09:57

#### [LeetCode][6]ZigZag Conversion解析与特殊解法 -Java实现

2016-06-06 14:29:53

#### leetcode06- ZigZag Conversion之Java版本

2016-06-02 19:05:51

#### LeetCode-6. ZigZag Conversion (JAVA)（之字形转换）

2017-04-17 09:41:03

#### 【LeetCode】ZigZag Conversion 解题报告

2014-10-26 16:49:26