标签:style blog color io for div sp log on
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".
思路:若为第一行或最后一行(即i=0 or i=nRow-1),则同一行的相邻元素索引相差2*(nRow-1);若为中间行(即0<i<nRow-1),则相邻索引相差为2*(nRow-1-i)和2i的交替。
1 class Solution { 2 public: 3 string convert( string s, int nRows ) { 4 if( --nRows <= 0 ) { return s; } 5 int slen = s.length(); 6 string zigzag = ""; 7 for( int i = 0; i <= nRows; ++i ) { 8 if( i == 0 || i == nRows ) { 9 for( int k = i; k < slen; k += 2*nRows ) { 10 zigzag += s[k]; 11 } 12 } else { 13 for( int k = i; k < slen; k += 2*nRows ) { 14 zigzag += s[k]; 15 if( k+2*(nRows-i) < slen ) { zigzag += s[k+2*(nRows-i)]; } 16 } 17 } 18 } 19 return zigzag; 20 } 21 };
标签:style blog color io for div sp log on
原文地址:http://www.cnblogs.com/moderate-fish/p/3960724.html