控制遍历方向模拟题--Z字形变换

Posted C_YCBX Py_YYDS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制遍历方向模拟题--Z字形变换相关的知识,希望对你有一定的参考价值。

题目

在这里插入图片描述
OJ平台


题目解析

  • 这类遍历方向的模拟题,一般有两种思考思路:
  1. 遍历方向模拟。
  2. 找数学规律模拟。

遍历方向模拟(此处我就只写这一种解法了)

通过维护一个表示行的数组,对该数组的更新方向进行不断的变换即可。

class Solution {
public:
//与蛇形遍历类似
    string convert(string s, int numRows) {
        //排除特殊情况
        if(numRows>=s.size()||numRows==1)
            return s;
        int size = numRows;
        vector<string>temp(size,"");
        //以蛇形遍历的数组为对象,对其用index进行赋值操作,用于控制往上走还是往下走。
        //用index和control变量控制往数组上更新的方向为 从上到下or从下到上
        int index = 0;
        bool control = false;
        for(int i=0;i<s.size();i++){
            //改变遍历状态
            if(index==size){index-=2;
                control = !control;}
            if(index==-1){index+=2;
                control = !control;}
            //从上往下遍历
            if(!control)
            temp[index++] += s[i];
            //从下往上遍历
            else
            temp[index--] += s[i];
        }//更新答案
        string res = "";
        for(int i=0;i<size;i++)
            res += temp[i];
        return res;}
};

以上是关于控制遍历方向模拟题--Z字形变换的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 6. Z 字形变换

leetcode第6题:Z字形变换--直接模拟求解法

LeetCode Algorithm 6. Z 字形变换

Leetcode 6. Z 字形变换-中等(图)

算法:Z字型(Zigzag)编排

Z字形变换 leetcode 6