leetcode之ZigZag Conversion

来源:互联网 发布:移动网络哪家 编辑:程序博客网 时间:2024/05/18 01:02

原题如下:

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

如果理解了题意,这道题感觉还是比较简单的,只需申请一个nRows大小的字符串向量,然后依次向每个字符串添加字符,最后再将字符串进行串联即可。在添加时注意超过边界时需要回到边界里第二个,所以是加减2,另外就是向前向后添加用flag标记,分别用来加减1操作。

class Solution {public:    string convert(string s, int nRows) {if(nRows == 1)return s;vector<string>v(nRows);int count = 0;int flag = 1;//flag为1是向前走,为-1是向后走for(int i = 0; i < s.size(); i++){    if(count < 0){count = count + 2;flag = 1;}else if(count >= nRows){count = count - 2;flag = -1;}v[count].append(1,s[i]);count = count + flag;}for(int i = 1; i < nRows; i++){v[0].append(v[i]);}return v[0];    }};


0 0
原创粉丝点击