将一个给定字符串 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对象
完整代码:
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;}
};