ZigZag Conversion

来源:互联网 发布:乐乎城市青年公寓 编辑:程序博客网 时间:2024/06/04 19:38
<p>The string <code>"PAYPALISHIRING"</code> 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>
P   A   H   NA P L S I I GY   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".
 
#include<iostream>#include<string>using namespace std; class Solution {public:public:    string convert(string s, int numRows) {int T = 2*numRows - 2;int len = s.size();string re = "";if( T == 0)return s;for(int i = 0; i < numRows; i ++){if(i == 0 || i == numRows - 1)for(int j = i; j < len; j = j + T)re = re.append(s,j,1);else{int sum = T;for (int j = i; j < len; j  = j + T){re = re.append(s,j,1);int behind = sum - j;if( behind < len)re = re.append(s,behind,1);sum += 2*T;}}}return re;    }};int main(){Solution solution;string test = "ABCDE";cout<<solution.convert(test,4);getchar();return 0;}

0 0
原创粉丝点击