class Solution(object): def convert(self, s, numRows): """ :type s: str :type numRows: int :rtype: str """ if numRows==1: return s if len(s)<2: return s s1=s[::numRows*2-2] d=[i for i in range(len(s))][::numRows*2-2] s2=s[numRows-1:][::numRows*2-2] d_1=[i+numRows-1 for i in d] if len(s1)==len(s2): d=d_1 t=numRows-2 while t>0: d1_1=[i+t for i in d if i+t<len(s)] d1_2=[i-t for i in d if i-t>0] d1=d1_1+d1_2 d1.sort() s3='' for i in range(len(d1)): s3=s3+s[d1[i]] s1=s1+s3 t-=1 elif len(s1)>len(s2): t=1 while t<=numRows-2: d1_1=[i+t for i in d if i+t<len(s)] d1_2=[i-t for i in d if i-t>0] d1=d1_1+d1_2 d1.sort() s3='' for i in range(len(d1)): s3=s3+s[d1[i]] s1=s1+s3 t+=1 return s1+s2执行用时 :80 ms, 在所有 Python 提交中击败了36.02%的用户 内存消耗 :11.7 MB, 在所有 Python 提交中击败了45.14%的用户 好笨哦,两个小时才编出来这么一个。。。
执行用时为 24 ms 的范例 class Solution(object): def convert(self, s, numRows): """ :type s: str :type numRows: int :rtype: str """ if numRows<2 : return s result = ['' for i in range(numRows)] j = 0 for i in range(len(s)): result[j] += s[i] if j == numRows-1: bool = -1 if j == 0: bool = 1 j += bool return ''.join(result)
人家这个办法好妙啊!!!!!!!!!
——2019.10.11