问题描述:给定一个字符串,以及锯齿深度n,把该字符串转换成锯齿形的模式后按行输出。
举例如下:
string str="0123456789";n=4;
锯齿表述如下:
0 6
1 5 7
2 4 8
3 9 输出结果为:0615724839
实现方法:
(1)注意第一行和最后一行,间隔为2*(n-1)
(2)其他行数据之间有两个间隔,m1=2*(n-1-i),m2=2*i;
实现C++代码为:
class Solution {
public:
string convert(string s, int numRows) {
if (numRows==1 || s.size()<numRows)
return s;
string str;
for (int i=0; i<numRows; i++)
{
int m1=2*(numRows-1-i);
int m2;
if(i==0 || i==numRows-1)
{
m2=2*(numRows-1);
m1=m2;
}
else
m2=2*i;
int k=0;
for(int j=i; j<s.size();)
{
str.push_back(s[j]);
k++;
if (k%2==1)
j+=m1;
else
j+=m2;
}
}
return str;
}
};