class Solution: def convert(self, s: str, numRows: int) -> str: if numRows == 1: return s rows = collections.OrderedDict() for i in range(numRows): rows[i] = [] ci = 0 curcol = 0 while ci < len(s): # full column if curcol % (numRows-1) == 0: for j in range(numRows): if ci < len(s): rows[j].append(s[ci]) ci += 1 else: row = (numRows-1) - (curcol % (numRows-1)) rows[row].append(s[ci]) ci += 1 curcol += 1 ans = "" for key in rows: ans += "".join(rows[key]) return ans