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;
}
};