原题地址:https://leetcode-cn.com/problems/zigzag-conversion/description/
题目描述:
将字符串 "PAYPALISHIRING"
以Z字形排列成给定的行数:
P A H N A P L S I I G Y I R
之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"
实现一个将字符串进行指定行数变换的函数:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3)
应当返回 "PAHNAPLSIIGYIR"
。
解题方法:
class Solution {
public:
string convert(string s, int numRows) {
string str = "";
int n = s.size();
int p;
if(n <= numRows || numRows == 1) return s;
for(int i = 0 ; i < numRows ; i ++){
p = i;
while(p < n){
str += s[p];
if(i != 0 && i != numRows - 1 && p + numRows * 2 - 2 - i * 2 < n){
str += s[p + numRows * 2 - 2 - i * 2];
}
p += numRows * 2 - 2;
}
}
return str;
}
};
题目比较简单,细心找到规律就行。