您的位置:首页 > 其它

[leetcode] 6. ZigZag Conversion 解题报告

2015-12-28 17:56 225 查看
题目链接:https://leetcode.com/problems/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"
.

Subscribe to see which companies asked this question

思路:看了半天才把题目看懂,原来就是走个之字形。举个栗子:abcdefghijklmn 4

a g m

b f h l n

c e i k

d j

然后我们要给出的答案就是agmbfhinceikdj,横着读。

思路就是有几行就申请几个字符串,然后一个字符串把一行的字符收集起来,最后再加在一起。关于之字形遍历我们可以设置一个递增标记flag,可以为1和-1,代表下一个是增加还是减小。

今天最后一题,早上五点了,该睡觉了,还有5题就把easy题刷完了,马上就120了,马上假期就结束了,开学之前看能不能到150。晚安了!也可以说早安了!




代码如下:

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