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