ZigZag Conversion(C++字形变换)
作者:互联网
(1)求出矩阵大小,设置访问反向顺序
class Solution {
public:
vector<vector<int>> v={{1,0},{-1,1}};
public:
string convert(string s, int numRows) {
int len=s.length();
if(numRows==1) return s;
int col=len/(2*numRows-2);
col=(numRows-1)*(col+1);
vector<vector<char>> vec(numRows,vector<char>(col,' '));
int i=0,x=0,y=0,d=0,x1,y1;
while(i<len) {
vec[x][y]=s[i];
x1=x+v[d][0];
y1=y+v[d][1];
if(0<=x1 && x1<numRows && 0<=y1 && y1<col) {
x=x1;
y=y1;
} else {
d=1-d;
x=x+v[d][0];
y=y+v[d][1];
}
i++;
}
string str="";
for(int i=0;i<vec.size();i++) {
for(int j=0;j<vec[i].size();j++) {
if(vec[i][j]!=' ') str.push_back(vec[i][j]);
}
}
return str;
}
};
标签:Conversion,string,int,ZigZag,public,numRows,vector,C++,col 来源: https://blog.csdn.net/coolsunxu/article/details/117548497