题目描述
字符串"PAYPALISHIRING"写成3行的Z字形的样式如下:
P A H N↵A P L S I I G↵Y I R
按行读这个Z字形图案应该是 "PAHNAPLSIIGYIR"
请编写代码完成将字符串转化为指定行数的Z字形字符串:
string convert(string text, int nRows);
The string"PAYPALISHIRING"is written in a zigzag pattern on a given
number of rows like this: (you may want to display this pattern in a
fixed font for better legibility)
P A H N↵A P L S I I G↵Y I R↵And then read line by line:"PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);convert("PAYPALISHIRING", 3)should return"PAHNAPLSIIGYIR"
示例1
输出
复制"AB" class Solution {
public:
/**
*
* @param s string字符串
* @param nRows int整型
* @return string字符串
*/
string convert(string s, int nRows) {
// write code here
if (nRows <=1) return s;
int t=nRows+nRows -2;//求出循环周期
string res="";
vector <string> m(nRows,res);
for (int i=0;i<s.length();i++){
int a=i%t;
if (a<nRows)//往下走
m[a]+=s[i];
else
m[t-a]+=s[i];//往上走
}
for (int i=0;i<nRows;i++)
res+=m[i];
return res;
}
};