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"
.
1 class Solution { 2 public: 3 string convert(string s, int numRows) { 4 if(numRows <= 1) return s; 5 string res; 6 int size = 2 * numRows - 2; 7 for(int i = 0; i < numRows; ++ i) 8 { 9 for(int j = i; j < s.size(); j += size) 10 { 11 res += s[j]; 12 int tmp = j + size - 2 * i; 13 if(i != 0 && i != numRows - 1 && tmp < s.size()) 14 res += s[tmp]; 15 } 16 } 17 return res; 18 } 19 };
参考:http://www.cnblogs.com/springfor/p/3889414.html