【Leetcode 6】 ZigZag Conversion

来源:互联网 发布:陈氏书法家 软件 编辑:程序博客网 时间:2024/06/06 15:02

题意:给定一个字符串,按照N字型的写法吧字符串重新排列,然后按从上到下,从左到右  输出新的字符串。(下面是例子)

"PAYPALISHIRING"

P   A   H   NA P L S I I GY   I   R
答案:"PAHNAPLSIIGYIR"


思路:开一个动态数组,对于一个字符只要知道他现在要放在第几行就可以了。不需要知道具体坐标,因为最后空格位置是不输出的。  只需要开 nrow个 vector  记录 对应行加入的字符,再从上往下输出即可。

代码如下:

class Solution {public:    string convert(string s, int numRows) {    vector<char>e[numRows];    int now=0,flag=1;    if(numRows==1)return s;    for(int i=0;i<s.length();++i){    e[now].push_back(s[i]);    if(now==0){    now++;    flag=1;    continue;    }    if(now==numRows-1){    now--;    flag=0;    continue;    }    if(flag==1)    now++;    else    now--;    }    string ans="";    for(int i=0;i<numRows;++i){    for(int j=0;j<e[i].size();++j)    ans+=e[i][j];    }    return ans;    }};


原创粉丝点击