問題描述:給定一個字符串,以及鋸齒深度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;
}
};