LeetCode6. ZigZag Conversion

题目链接:

https://leetcode.com/problems/zigzag-conversion/

题目描述

将字符串,循环对角化,在输出。

比如:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20循环对角化成之字型。

0               8               16           
1           7   9           15  17           
2       6       10      14      18           
3   5           11  13          19           
4               12              20           
)

分析:

开始真的没读懂题目什么意思,zizag?

感谢

http://www.cnblogs.com/sanghai/p/3632528.html

不知道到在哪看的说用中间数组会超时………哪有嘛。
用一个二维数组,用一个j控制对应行,把字符串中循环对角化后的字符,放入中间数组对应行下。从j=0到j=numsRow-1再到j=0循环,i控制字符串下标,一直向前走。

代码:

class Solution {
public:
    string convert(string s, int numRows) {
        int len=s.size();
        if(len<=1 || numRows<=1){
            return s;
        }
        string tmp[numRows];
        int i=0;
        while(i<len){
            for(int j=0;i<len && j<numRows;j++){
                tmp[j]+=s[i++];
            }
            for(int j=numRows-2;i<len && j>0;j--){
                tmp[j]+=s[i++];
            }
        }
        string result="";
        for(int j=0;j<numRows;j++){
            result+=tmp[j];
        }
        return result;
    }
};

你可能感兴趣的:(LeetCode,字符串,6)