def convert(s, numRows): if numRows == 1 and numRows >= len(s): return s li = [[] for x in range(numRows)] row, step = 0, 1 for i in s: li[row].append(i) if row == 0: step = 1 elif row == numRows - 1: step = -1 row += step result = '' for y in range(len(li)-1): result = result+''.join(li[y]) return result s = convert("PAYPALISHIRING", 4) print(s) s = convert("LEETCODEISHIRING",4) #输出结果 LDREOEIIECIHN 正确是LDREOEIIECIHNTSG 检查一下那一步少了什么操作 print(s) # def convert(s, numRows): # if numRows == 1: # return s # l = [''] * numRows # print(l) # row,step = 0,1 # for c in s: # if row == 0: # step = 1 # if row == numRows - 1: # step = -1 # l[row] += c # row += step # return ''.join(l) # print(convert('LEETCODEISHIRING', 3) ) # 预期输出 'LCIRETOESIIGEDHN'