# 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 s, int numRows);


Example 1:

Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"


Example 2:

Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:

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


Solution:

Simple implementation: compute the conversion formula

class Solution {
public:
string convert(string s, int numRows) {
if(numRows==1) return s;
string ans;
int d = (numRows-1)*2;
for(int i=0;i<numRows;i++){
int j = i;
while(j<s.size()){
ans+=s[j];
if(j%d!=0&&j%d!=numRows-1){
if(j/d*d+(d-(j%d))<s.size()){
ans+=s[j/d*d+(d-(j%d))];
}
}
j+=d;
}
}
return ans;
}
};