思路:
– 第一行和最后一行的序号是等差数列;
– 其余行序号是两个差值交替的序列。
– 所有的差值均与行号有关。(Key)
class Solution:
def convert(self, s, numRows):
“””
:type s: str
:type numRows: int
:rtype: str
“””
re = “”
k = len(s)
if k <= numRows or numRows == 1:
return s
for i in range(numRows):
sta = i
re = re + s[sta]
if i == 0 or i == numRows-1 :
d = 2* numRows – 2
while (sta + d) < k:
sta = sta + d
re = re + s[sta]
else:
d1 = 2 * ( numRows – i ) – 2
d2 = 2 * ( i + 1 ) – 2
d = (d1,d2)
j = 0
while (sta + d[j%2]) < k:
sta = sta + d[j%2]
re = re + s[sta]
j+=1
return re
执行用时:128 ms
我的提交执行用时
已经战胜 74.00 % 的 python3 提交记录