leetcode习题解答:6. ZigZag Conversion

来源:互联网 发布:女生湿 知乎 编辑:程序博客网 时间:2024/06/05 19:35

难度: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   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".


思路:

要过的话比较简单,按照它的要求把字符放进不同的字符串里,最后拼起来,没什么难度,不知道有没其他解法:

代码:

class Solution:    def convert(self, s, numRows):        vec = []        for x in range(numRows):            vec.append("")        total = 0        inner1 = 0        inner2 = numRows - 2        step = 1        for x in s:            if step % 2 == 1 or numRows == 2 or numRows == 1:                vec[inner1] = vec[inner1]+x                if inner1 == numRows-1:                    step += 1                    inner1 = 0                else:                    inner1 += 1            else:                vec[inner2] = vec[inner2]+x                inner2 -= 1                if inner2 == 0:                    step += 1                    inner2 = numRows - 2                        result = ""        for x in vec:            result += x        return result


原创粉丝点击