[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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

posted @ 2015-06-17 20:12  橙&子  阅读(462)  评论(0编辑  收藏  举报