解题思路:以2n-2为周期,遍历字符串,对于每组循环,特殊循环第一个和第n-1个字符,他们的循环只有一次;而其余的每次都循环两次,而且步长为2n-2-2*i,所以代码如下所示:
class Solution {
public:
string convert(string s, int numRows) {
int n = numRows;
string a;
int j;
int i = 0;
int load =2*n-2;
if(n==1) return s;
for(i=0;i<n;i++)
for(j=0;(i+load*j)<s.size();j++)
{
if(i == 0)
{
a +=s[i+load*j];
}
else if(i == n-1)
{
a +=s[i+load*j];
}
else
{
a += s[i+load*j];
if((i+load*j+load-2*i)<s.size())
a += s[i+load*j+load-2*i];
}
}
return a;
}
};