Leetcode 6. Z字形变换 C++

题目描述

《Leetcode 6. Z字形变换 C++》

思路

一下做法是一种比较粗暴的做法。通过定义一个二维数组,记录Z型变换后的结果,之后再将结果读出。在程序中,只需要定义一个变量(ln)用于记录是哪一行该插入。如果到达最上端,则下一次就开始向下一行插入。如果到达最下端,那么下一次就开始向上一行插入。

解答

class Solution {
public:
    string convert(string s, int numRows) {
        if(s.empty() || numRows<=1) return s;
        vector<vector<char>> temp(numRows);
        int ln=0;
        int flag=0;
        for(int i=0; i!=s.size();++i)
        {
            temp[ln].push_back(s[i]);
            if(numRows-1==ln)
            {
                flag=1;
            }
            if(0==ln)
            {
                flag=0;
            }
            if(0==flag)
            {
                ++ln;
            }
            if(1==flag)
            {
                --ln;
            }
        }
        int sum=0;
        string res;
        for(int i=0; i<numRows && sum<s.size();++i)
        {
            for(auto c : temp[i])
            {
                res+=c;
                sum++;
            }
        }
        return res;
    }
};
    原文作者:Z字形编排问题
    原文地址: https://blog.csdn.net/yuanliang861/article/details/84191316
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞