8432a4cbb0143f78b7308264755e2208
Problem 6: ZigZag Conversion

Problem 6: ZigZag Conversion

链接:https://leetcode.com/problems/zigzag-conversion/

难度等级:Medium(中等)

题干

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 s, int numRows);
Example 1:

Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Example 2:

Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:

P     I    N
A   L S  I G
Y A   H R
P     I

给定字符串和蛇形排列占据的行数,要求返回重新排列后的串

分析

这题虽然难度标着Medium,但实际上还是比较简单的,最起码要比problem5的回文串简单得多。老实说回文串那题如果用上manchester算法的话,可以算是hard了。。。

解题其实很简单,就是按照题目当中的要求将字母一个个摆放到蛇形变化之后的行上去即可。

比如字符串是“PAYPALISHIRING ”,rowNum=4。我们可以创建四个空串:

“”
“”
“”
“”

然后我们按照蛇形一个字母一个字母地放进这些空串当中:

当放了第一个字母p之后,变成:

“p”
“”
“”
“”

接着放第二个:

“p”
“a”
“”
“”

接着第三个:

“p”
“a”
“y”

top Created with Sketch.