?
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.
?
题意:给你个按N型排列的字符串,并告诉你几行,让你输出每一行连起来的字符串
?
通过这张图得出每相邻偶数行的坐标差,和相邻的坐标差,计算就行了
?
class Solution {
public:
string convert(string s, int nRows) {
if (nRows <= 1)
return s;
string ans = ;
int len = s.length();
for (int i = 0; i < nRows; i++) {
int cur = i;
while (cur < len) {
ans += s[cur];
if (i != 0 && i != nRows-1 && (cur + 2 * (nRows - 1 - i)) < len)
ans += s[cur + 2 * (nRows- 1 - i)];
cur += 2 * (nRows - 1);
}
}
return ans;
}
};
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?