<p>The string <code>&quot;PAYPALISHIRING&quot;</code> 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>

<pre>
P   A   H   N
A P L S I I G
Y   I   R
</pre>

<p>And then read line by line: <code>&quot;PAHNAPLSIIGYIR&quot;</code></p>

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

<pre>
string convert(string s, int numRows);
</pre>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;PAYPALISHIRING&quot;, numRows = 3
<strong>Output:</strong> &quot;PAHNAPLSIIGYIR&quot;
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;PAYPALISHIRING&quot;, numRows = 4
<strong>Output:</strong> &quot;PINALSIGYAHRPI&quot;
<strong>Explanation:</strong>
P     I    N
A   L S  I G
Y A   H R
P     I
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;A&quot;, numRows = 1
<strong>Output:</strong> &quot;A&quot;
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= s.length &lt;= 1000</code></li>
	<li><code>s</code> consists of English letters (lower-case and upper-case), <code>&#39;,&#39;</code> and <code>&#39;.&#39;</code>.</li>
	<li><code>1 &lt;= numRows &lt;= 1000</code></li>
</ul>

class Solution {
public:
    string convert(string s, int numRows) {

    //    int len = s.length();
    //    char ch[100][100];
    //    for (int i=0;i<100;i++)
    //    {
    //     for (int j=0;j<100;j++)
    //     {
    //         ch[i][j] = ' ';
    //     }
    //    } 
    //    int k=0;
    //    for (int i=0;i<numRows;i++)
    //    ch[k++][0] = s[i];

    //    int l = 0;
    //    int r = numRows-1;
    //    for (int i=k;i<s.length();)
    //    {
    //       if (r==0)
    //       {
    //         r++;
    //         while(r<=2)
    //         {
    //             ch[r][l+1] = s[l+numRows];
    //             r++;
    //             l++;
    //             i++;
    //         }
    //         r--;
    //       }
    //       if (r == numRows-1)
    //       {
    //         r--;
    //         while(r>=0)
    //         {
    //             ch[r][l+1] = s[l+numRows];
    //             r--;
    //             l++;
    //             i++;
    //         }
    //         r++;
    //       }
    //    }
    //    string p="";
    // for (int i=0;i<100;i++)
    // {
    //     for (int j=0;j<100;j++)
    //     {
    //         if (ch[i][j]==' ')
    //         continue;
    //         else
    //         p = p + ch[i][j];
    //     }
    // }
    // return p;




    if (numRows==1)
    return s;
    vector<string>zigzag(numRows);
    int i=0,row = 0;
    bool direction = 1;
    while(true)
    {
        if (direction)
        {
            while (row<numRows && i<s.size()) {
                zigzag[row].push_back(s[i++]);
                row++;
            }
            row = numRows-2; 
        }
        else {
            while (row>=0 && i<s.size())
            {
                 zigzag[row].push_back(s[i++]);
                 row--;
            }
            row=1;
        }
        if (i>=s.size())
        break;
        direction = !direction;
    }
    string ans = "";
    for (int i=0;i<zigzag.size();i++)
    {
        ans+=zigzag[i];
    }
    return ans;
    }
};
13418