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 RAnd 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"
.
题中所说的ZigZag查了一下得知,指的是折线结构,结合例子如下图所示:
class Solution {
public:
string convert(string s, int nRows) {
string new_s = "";
int strlength = s.length();
if (s.empty() || nRows == 0 || nRows == 1)
{
return s;
}
for(int i = 0; i < nRows; i++)
{
for(int j = i; j < strlength; )
{
new_s = new_s + s[j];
if (i == nRows - 1|| i == 0)
{
j = j + 2 * (nRows - 1);
}
else
{
j = j + 2 * (nRows - i - 1);
if (j < strlength)
{
new_s = new_s + s[j];
j = j + 2 * i;
}
}
}
}
return new_s;
}
};