6. ZigZag Conversion

来源:互联网 发布:金融程序员 编辑:程序博客网 时间:2024/06/10 16:53

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   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".

Subscribe to see which companies asked this question.


将字符串纵向的转化成‘zigzag’形式,然后横向输出结果。单纯的找规律的题...使用'01234567890123...'比较容易看出规律。


代码:

class Solution{public:string convert(string s, int numRows){if(numRows <= 1) return s;string res;int step = (numRows - 1) * 2;for(int i = 0; i < numRows; ++i){if(i == 0 || i == numRows - 1){for(int j = i; j < s.size(); j += step){res += s[j];}} else{for(int j = i; j < s.size();){res += s[j];j += step - (i*2);if(j >= s.size()) break;res += s[j];j += (i*2);}}}return res;}};


原创粉丝点击