题意:一个字符串按照斜三角方式变换
比如ABCDEFGHIJKLMNOPQR,按4行变换,则变成
A G M
B F H L N R
C E I K O Q
D J P
变换完之后再横向取字符串,即变成了AGMBFHLNRCEIKOQDJP
思路:
按照上面的例子,弄string数组str[4],一个string对应一行
从原串的第一个开始遍历,其字符所在行(row)从0变到3,接着又从3变到0
所以每次按照字符所在行,添加到对应行的string中
最后再把4个string合起来即可
PS:注意考虑只有一行的情况,那么row在遍历过程中不需要进行变化!
class Solution {
public:
string convert(string s, int numRows)
{
string *str;
int now_row=0,flag=0,i,len;
str=new string[numRows];
len=s.length();
for(i=0;i<len;i++)
{
str[now_row]+=s[i];
if(numRows!=1)
{
if(flag==0)
now_row++;
else now_row--;
if(now_row==0)
flag=0;
else if(now_row==numRows-1)
flag=1;
}
}
for(i=1;i<numRows;i++)
str[0]+=str[i];
return str[0];
}
};