控制遍历方向模拟题--Z字形变换
Posted C_YCBX Py_YYDS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制遍历方向模拟题--Z字形变换相关的知识,希望对你有一定的参考价值。
题目
题目解析
- 这类遍历方向的模拟题,一般有两种思考思路:
- 遍历方向模拟。
- 找数学规律模拟。
遍历方向模拟(此处我就只写这一种解法了)
通过维护一个表示行的数组,对该数组的更新方向进行不断的变换即可。
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字形变换的主要内容,如果未能解决你的问题,请参考以下文章