您的位置:首页 > 其它

[LeetCode]ZigZag Conversion

2015-06-17 20:12 281 查看
题意:输入一个字符串,根据zigzag方式排列,输出新排列的字符串

原题来自:https://leetcode.com/problems/zigzag-conversion/

分析:

刚开始,还不懂ZigZag是什么,查了下,zigzag如下(查看详细



按如上的顺序输出,即zigzag。刚开始不懂格式情况,wa了好几次。

根据上图,我们发现如下规律,这里我们假设我们分成m排:

1 第i排从i开始
2 第i排两个数的间隔是2(i-1),2(m-i)交替。

class Solution
{
public:
string convert(string s, int nRows)
{
if (nRows <= 1)
return s;

string result = "";

//row表示行,j表示s下标,k表示result下标
int step = 2*(nRows-1);
for(int row=0; row<nRows; row++)
{
for(int j=row; j<s.length();j+=step)
{
result += s[j];
if(row==0 || row == nRows-1)
continue;

//如果不是第一行或者最后一行,则还有一个斜线上的数据
int slash = j + step -2*row;
if(slash < s.length())
result += s[slash];
}
}
return result;
}
};


作者:orange1438
出处:http://www.cnblogs.com/orange1438/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: