您的位置:首页 > 其它

6. ZigZag Conversion

2016-07-26 19:33 381 查看

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   m
row 2:b f h l n
row 3:c e i k o
row 4:d   j   p      return row 1 + row 2 + row 3 +row 4 ,i.e. return agm bfhln ceiko djp

so,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[p
9897
o]=li[po]+i
if po==0:
dir=1
return ''.join(li)


Submission Result:

Status: Accepted

Runtime: 112 ms

Ranking: beats 92.15%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: