class Solution {
public:
string convert(string s, int numRows) {
int length = s.length();
int index = 0;
string str_out;
if (numRows == 1 || length <= numRows)
return s;
else
{
int interval = 0;
int interval_num = 0;
int max_interval = (numRows-1)*2;
for (int row = 0; row < numRows; row++)
{
for (int col = 0; col < length; col++)
{
if (col == 0)
{
interval = 0;
}
else if (row == 0 || row == numRows-1)
{
interval = max_interval;
}
else if (col % 2 == 0)
{
interval = row * 2;
}
else
{
interval = max_interval - row * 2;
}
if (row == 0 || row == numRows-1)
{
index = row + interval * col;
}
else
{
if (col % 2 == 0)
{
index = row + max_interval * (col / 2);
}
else
{
index = row + max_interval * (col / 2) + interval;
}
}
if (index >= length)
continue;
str_out.append(s, index, 1);
}
}
}
return str_out;
}
};