classSolution: defconvert(self, s: str, nrows: int) -> str: if nrows==1: return s D=defaultdict(list) # traverse row and once reach the ceil or bottom, then # change direction and increase/stop increase column k=0 i=0 j=0 direction=True increase=False while k<len(s): D[i].append(s[k]) k+=1 if direction: i+=1 else: i-=1 if increase: j+=1 if k%(nrows-1)==0: direction=not direction increase=not increase R="" for row inrange(nrows): R+="".join(D[row]) return R
Actually, we don’t need increase variable. But it is simulation, so i keep it there.