leetcode 6. ZigZag Conversion

来源:互联网 发布:路由器mac地质作用 编辑:程序博客网 时间:2024/06/06 09:37

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

解:建立一个字符串数组,模拟Z形模式。另外,今天好像看到在for中尽量用++i取代i++,好像++i效率更高,也不知道对不对。说是i++需要两个变量才能完成

class Solution {public:    string convert(string s, int numRows) {        if(numRows <= 1) return s;        string *newstr = new string[numRows];        int len = s.length();        int row = 0, step = 1;        for(int i = 0; i < len; ++i){            newstr[row].push_back(s[i]);            if(row == 0){                step = 1;            }else if(row == numRows - 1){                step = -1;            }            row += step;        }        s.clear();        for(int i = 0; i < numRows; ++i){            s += newstr[i];        }        delete[] newstr;        return s;    }};

原创粉丝点击