码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 6 ZigZag Conversion

时间:2015-06-27 16:42:26      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:leetcode   zigzag   math   

1. 问题描述

  给定一个字符串和一个行数,表示按照zigzag的方式扫描的结果,编写算法输出按行扫描的结果。
  技术分享


2. 方法与思路

  首先要先明白zigzag的顺序,
  
  技术分享
  
  明白了zigzag扫描后,要确定zigzag中字符和按行扫描字符的对应关系。有两点:
  1). 每行中的列元素都会有对应的间隔span =2?row?2,例如行为4的zigzag扫描中,[1,7,13], [2,8,14]间隔为2?4?2=6
  2). 中间行每一个span前还会有一个元素,间隔为span?2?rowi
  

class Solution {
public:
    string convert(string s, int numRows) {
        int i,j;
        string str="";

        if(s.length() == 0) return "";
        if(numRows == 1) return s;

        int span = 2*numRows-2;        
        for(int i = 0; i <numRows; i++)
        {
            j = i;

            while(j < s.length())
            {       
                str = str+s[j];

                j += span;
                if(i != 0 && i != numRows-1)
                    if(j-2*i < s.length()) str = str + s[j - 2*i];  

            }  //cout<<"i:"<<i<<"str:"<<str<<endl;
        }

        return str;
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

Leetcode 6 ZigZag Conversion

标签:leetcode   zigzag   math   

原文地址:http://blog.csdn.net/jeanphorn/article/details/46660157

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!