标签:遇到 size 运行时 str 运行 span for 想法 二维数组
根据给定的行数,将字符串从上到下、从左到右进行Z字形排列,详见样例。
代码1(二维数组直接模拟):
class Solution {
public:
string convert(string s, int numRows) {
if(numRows == 1) return s;
int len = s.size();
char res[numRows][len];
memset(res, 0, sizeof(res));
bool flag = true;
int col = 0, row = 0;
for(int i = 0; i < len; ++i)
{
if(flag) //down
{
res[row++][col] = s[i];
if(row == numRows)
{
flag = false;
--row; //back
}
}
else //up
{
res[--row][++col] = s[i];
if(row == 0)
{
flag = true;
--i;
}
}
}
/*
for(int i = 0; i < numRows; ++i, puts(""))
for(int j = 0; j <= col; ++j)
cout << res[i][j];
*/
string ans = "";
for(int i = 0; i < numRows; ++i)
for(int j = 0; j <= col; ++j)
if(res[i][j] != 0)
ans.push_back(res[i][j]);
return ans;
}
};
代码2(一维数组直接模拟):
代码3(数学关系):
这种关系的一般都会和数学(找关系式?)有关系的,如以前遇到过的“蛇形填数”。
标签:遇到 size 运行时 str 运行 span for 想法 二维数组
原文地址:https://www.cnblogs.com/songjy11611/p/12134441.html