[LeetCode]ZigZag Conversion
2015-06-17 20:12
281 查看
题意:输入一个字符串,根据zigzag方式排列,输出新排列的字符串
原题来自:https://leetcode.com/problems/zigzag-conversion/
分析:
刚开始,还不懂ZigZag是什么,查了下,zigzag如下(查看详细)
![](http://images0.cnblogs.com/blog2015/478846/201506/172003282019379.jpg)
按如上的顺序输出,即zigzag。刚开始不懂格式情况,wa了好几次。
根据上图,我们发现如下规律,这里我们假设我们分成m排:
1 第i排从i开始
2 第i排两个数的间隔是2(i-1),2(m-i)交替。
原题来自:https://leetcode.com/problems/zigzag-conversion/
分析:
刚开始,还不懂ZigZag是什么,查了下,zigzag如下(查看详细)
![](http://images0.cnblogs.com/blog2015/478846/201506/172003282019379.jpg)
按如上的顺序输出,即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/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。