题目:
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”.
程序:
class Solution {
public:
string convert(string s, int nRows) {
if(nRows <= 1)
return s;
vector<string> z(nRows,"");
int step = 1,row = 0;
int l = s.length();
for(int i=0;i<l;i++)
{
z[row] += s[i];
if(row == 0)
step = 1;
else if(row == nRows-1)
step = -1;
row += step;
}
string result = "";
for(int i=0;i<nRows;i++)
result += z[i];
return result;
}
};