[LeetCode]ZigZag Conversion
题意:输入一个字符串,根据zigzag方式排列,输出新排列的字符串
原题来自:https://leetcode.com/problems/zigzag-conversion/
分析:
刚开始,还不懂ZigZag是什么,查了下,zigzag如下(查看详细)
按如上的顺序输出,即zigzag。刚开始不懂格式情况,wa了好几次。
根据上图,我们发现如下规律,这里我们假设我们分成m排:
1 第i排从i开始
2 第i排两个数的间隔是2(i-1),2(m-i)交替。
1 class Solution 2 { 3 public: 4 string convert(string s, int nRows) 5 { 6 if (nRows <= 1) 7 return s; 8 9 string result = ""; 10 11 //row表示行,j表示s下标,k表示result下标 12 int step = 2*(nRows-1); 13 for(int row=0; row<nRows; row++) 14 { 15 for(int j=row; j<s.length();j+=step) 16 { 17 result += s[j]; 18 if(row==0 || row == nRows-1) 19 continue; 20 21 //如果不是第一行或者最后一行,则还有一个斜线上的数据 22 int slash = j + step -2*row; 23 if(slash < s.length()) 24 result += s[slash]; 25 } 26 } 27 return result; 28 } 29 };
作者:orange1438 出处:http://www.cnblogs.com/orange1438/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。