6. ZigZag Conversion

来源:互联网 发布:淘宝域名是什么 编辑:程序博客网 时间:2024/06/06 14:27

6. ZigZag Conversion

Leetcode link for this question

Discription:

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

Analyze:

If nRows=4, text=abcdefghijklmnop

 row 1:a   g   mrow 2:b f h l nrow 3:c e i k orow 4:d   j   p      return row 1 + row 2 + row 3 +row 4 ,i.e. return agm bfhln ceiko djpso,assigned order is:row 1, row 2, row 3, row 4, row 3, row 2, row 1,row 2, row 3 etc.the ith char in text will assigned to the row which NO. is the value of the ith index of the above list. 

Code 1:

class Solution(object):    def convert(self, s, numRows):        """        :type s: str        :type numRows: int        :rtype: str        """        if numRows==1:            return s        li=['']*numRows        po=-1        dir=1        for i in s:            if dir:                po+=1                li[po]=li[po]+i                if po==numRows-1:                    dir=0            else:                po-=1                li[po]=li[po]+i                if po==0:                    dir=1        return ''.join(li)           

Submission Result:

Status: Accepted
Runtime: 112 ms
Ranking: beats 92.15%

0 0
原创粉丝点击