您的位置:首页 > 其它

LeetCode--zigzag-conversion

2018-01-18 19:13 369 查看


题目描述

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".
分析:用一个vector存储每一行的string,用一个变量step确定行号的行走方向,到达第一行时向下,到达最后一行时向上,最后将得到的string按照行号依次连接。

class Solution {
public:
    string convert(string s, int nRows) {
        if(nRows <= 1)
            return s;
        vector<string> z(nRows,"");
        int step = 1,row = 0;
        int l = s.size();
        for(int i=0;i<l;i++)
        {
            z[row] += s[i];
            if(row == 0)
                step = 1;
            else if(row == nRows-1)
                step = -1;
            row += step;
        }
        string result = "";
        for(int i=0;i<nRows;i++)
            result += z[i];
        return result;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: