zoukankan      html  css  js  c++  java
  • [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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    01背包
    manacher马拉车算法
    盒子放球的DP
    Children’s Queue
    抽象类_作为接口
    斯特林数
    欧拉路HDU3018
    2019 SDN上机第三次作业
    第05组 Alpha冲刺(2/4)
    Alpha冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/orange1438/p/4584257.html
Copyright © 2011-2022 走看看