It’s easy,just simulate!

string convert(string s, int numRows) {//simulate
if (numRows == 1)return s;
char a[1000][1000];
memset(a, ' ', sizeof(a));
int k = numRows * 2 - 2;
int n = s.size();
n = n / k + 1;
bool flag = true;
string::iterator it = s.begin();
for (int i = 0; ; ++i) {
for (int j = 0; j < numRows; ++j) {
a[j][i] = *it;
++it;
if (it == s.end()) {
flag = false;
break;
}
}
if (!flag)break;
for (int j = numRows - 2; j > 0; --j) {
++i;
a[j][i] = *it;
++it;
if (it == s.end()) {
flag = false;
break;
}
}
if (!flag)break;
}
string ans = "";
for (int i = 0; i <= numRows; ++i) {
for (int j = 0; j < n*(k-numRows+1); ++j) {
if (a[i][j] == ' ')continue;
ans += a[i][j];
}
}
return ans;
}