class Solution(object):
def convert(self, s, numRows):
if numRows==1:
return s
else:
str_r=[]
for i in range(numRows):
for index_s,alphab in enumerate(s):
if index_s%(2*numRows-2)==i or index_s%(2*numRows-2)==(2*numRows-2)-i:
str_r.append(alphab)
return ''.join(str_r)
哈哈,对不起了,虽然运行速度慢,但是这样的代码真的很简洁。
官方题解带一个flag,用来转向,这种解法第一次见很难归类,多了可能就有概念了吧
时间复杂度(O)n真的很牛逼
class Solution:
def convert(self, s, numRows):
if numRows < 2: return s
res = ["" for _ in range(numRows)]
print res
i, flag = 0, -1
for c in s:
res[i] += c
if i == 0 or i == numRows - 1: flag = -flag
i += flag
return "".join(res)