[Leetcode 6, Easy] Zigzag Conversion

来源:互联网 发布:用友远程软件 编辑:程序博客网 时间:2024/06/06 00:15
Problem

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:

The solution is nothing but find a general pattarn to arrange the characters in the desired form.

Solution:

C++:

string convert(string s, int nRows) {        if(nRows == 1)            return s;                string rStr;        for(int row = 0; row < nRows; ++row)            for(int i = row; i < s.size(); i += 2*(nRows - 1)) {                rStr.append(&s[i], 1);                if(row != 0 && row != nRows - 1 && i + 2*(nRows - 1 - row) < s.size())                    rStr.append(&s[i + 2*(nRows - 1 - row)], 1);            }                    return rStr;    }
Java:


Python:


0 0
原创粉丝点击