将字符串 "PAYPALISHIRING"
以Z字形排列成给定的行数:
P A H N A P L S I I G Y I R
之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"
实现一个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = "PAYPALISHIRING", numRows = 3 输出: "PAHNAPLSIIGYIR"
示例 2:
输入: s = "PAYPALISHIRING", numRows = 4 输出: "PINALSIGYAHRPI" 解释: P I N A L S I G Y A H R P I
最后关系是2*numRows-2±j (j为行数)
class Solution {
public:
string convert(string s, int numRows) {
string str;
int n = s.length();
if(numRows == 1) return s;
for(int j = 0; j < numRows; j++)
for(int i = 0; (i - j)<n; i += (2*numRows-2))
{
if(i - j > 0 && j != 0 && j != (numRows-1))
str += s[i - j];
if((i+j) < n)
str += s[i + j];
}
return str;
}
};