LeetCode第六题zigZag的简单解法
这题目是一道简单的找规律的题目
0 10 第1行两个数之间的间隔为 10,10,10
1 9 11 第2行两个数之间的间隔为8,2,8,2
2 8 12 第3行两个数之间的间隔为6,4,6,4
3 7 13 第4行两个数之间的间隔为4,6,4,6
4 6 14 第5行两个数之间的间隔为2,8,2,8
5 15 第6行两个数之间的间隔为10
所以,规律就是,第一行和最后一行间隔都是2*(numRows-1)
其余各行的间隔依次为k=2*(numRows-1-i) 和k=2*(numRows-1)-k
string convert(string s, int numRows) {
if(s.empty())
return " ";
if(numRows==1)
return s;
string ret;
for(int i=0;i!=numRows;i++)
{
if(i==0||i==numRows-1)
{
int k=2*(numRows-1);
for(int j=i;j<s.size();j=j+k)
ret.push_back(s[j]);
}
else
{
int k=2*(numRows-1-i);
for(int j=i;j<s.size();j=j+k,k=2*(numRows-1)-k)
ret.push_back(s[j]);
}
}
return ret;
}
};