这题主要是读明白题意。本来打算用二维数组存储,然后对数组中元素赋值,通过横纵索引的规律一个一个的输出。所以把图画了下来,分别是row为2,3,4时的情况,后来一看似乎有规律可循,即所要的转化串与原始串之间有一定的对应规律,想了想,试了试,测试了一下边界条件,一下子就出来了,感觉自己的编程能力提高了,有木有?
string convert(string s, int nRows) {
int i,j;
int strlen = s.length();
if (nRows==1)
{
return s;
}
string tempstr="";
for (int k=1,step=2*nRows-2;k<=nRows;k++,step-=2)
{
i=k;j=i+step;
if (k==1||k==nRows)
{
while(i<=strlen)
{
tempstr+=s[i-1];
i+=2*nRows-2;
}
}
else
{
while(i<=strlen||j<=strlen)
{
if (i<=strlen)
{
tempstr+=s[i-1];
i+=2*nRows-2;
}
if (j<=strlen)
{
tempstr+=s[j-1];
j+=2*nRows-2;
}
}
}
}
return tempstr;
}