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”.
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
if(numRows<=1){
return s;
}
var ll = s.length;
var res = "";
var flag = true;
var group = 2*numRows-2;
for(var i=0;i<numRows;i++){
var loc = i;
while(flag){
if(loc>=ll){
break;
}
res += s[loc];
if(i!==0&&i!==numRows-1){
var n_loc = loc+group-2*i;
if(n_loc<ll){
res+=s[n_loc];
}
}
loc += group;
}
}
return res;
};