6. ZigZag Conversion

题目

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

思路

找规律,比较简单,在纸上画几个例子就行了。就是要注意处理几个特殊情况。

实现

class Solution {
public:
    string convert(string s, int numRows) {
        string ans;
        for(int j=0; j0 && j

思考

时间比较紧的时候,可以将首尾行分别用两个循环处理,将行数为1的情况单独处理。简单粗暴有时候更加有效,不用想着如何让代码高度压缩统一。
另外此题在计算中间行时,可以让循环的步长不断在两种情况下变化。

你可能感兴趣的:(6. ZigZag Conversion)