将一个给定字符串 s
根据给定的行数 numRows
,以从上往下、从左到右进行 Z 字形排列
比如输入字符串为 "PAYPALISHIRING"
行数为 3
时,排列如下:
P A H N
A P L S I I G
Y I R
这里我们可以准备numRows个string对象来接受s中的字符
可以看到上述例子的插入规律是
3行:0 1 2 1
4行:0 1 2 3 2 1
5行:0 1 2 3 4 3 2 1
这里我们可以准备一个数组然后按照规律数组去插入相应的stirng对象
完整代码:
cpp
class Solution {
public:
string convert(string s, int numRows) {
string val="";
vector<int> index;
vector<string> dp(numRows,"");
int len=s.length();
/*获取规律数组*/
for(int i=0;i<numRows;i++) index.push_back(i);
int temp=numRows-2;
while(temp>=1) {index.push_back(temp);temp--;}
/*遍历s 插入其归属string*/
for(int i=0;i<len;i++)
{
dp[index[i%index.size()]]+=s[i];
}
for(auto ie:dp)
{
val+=ie;
}
return val;
}
};