LeetCode-ZigZag Conversion

来源:互联网 发布:传智播客2016java视频 编辑:程序博客网 时间:2024/04/28 08:45

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

Solution:

Code:

<span style="font-size:14px;">class Solution {public:    string convert(string s, int nRows) {        int length = s.size();        if (nRows == 1) return s;        int group = 2+(nRows-2)*2;        string result;        int q = length/group;        int r = length%group;        for (int i = 0; i < nRows; ++i) {            if (i == 0 || i == nRows-1) {                for (int j = i; j < length; j += group)                    result += s[j];            } else {                for (int j = i; j < length; j += group) {                    result += s[j];                    if (j+2*nRows-2-2*i < length)                        result += s[j+2*nRows-2-2*i];                }            }        }        return result;    }};</span>


0 0
原创粉丝点击