# ZigZag Conversion – LeetCode JavaScript

## 題目

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

## 題目解釋

2 * nRows – 2;

distace – 2i, 2 i, distance – 2i, 2i…

``````/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
if (numRows <= 1)
return s;
let res = '';
let len = s.length;
let dis = numRows*2 - 2;
/* first row */
for (let i = 0; i < len; i =dis) {
res  = s.charAt(i);
}
/* middle */
for (let i = 1; i < numRows-1; i  ) {
let tempDis = 2*i;
for (let j = i; j < len; j  = tempDis) {
res  = s.charAt(j);
tempDis = dis - tempDis;
}
}
/* last row */
for (let i = numRows-1; i< len; i  = dis) {
res  = s.charAt(i);
}
return res;
};``````