1. 题目
2. 分析
充分地思考问题,然后得出抽象解,最后再写代码。
本题初看是有点儿麻烦的,因为有个N型的变换,但是如果把这个N型压缩一下,其实就是考虑每行放什么值的问题。那么问题就简化成当前的字符串的字符需要放在哪一行?做一个处理就ok了。
3. 代码
class Solution:
def convert(self, s: str, numRows: int) -> str:
res = [[]for i in range(numRows)]
idx = 0
up = 0
down = 1 # 初始值向下
for i in range(len(s)):
res[idx].append(s[i])
if down:
idx += 1
elif up:
idx -= 1
if idx == numRows: # 只能往上
idx -= 2
up = 1
down = 0
elif idx < 0:
idx += 2
up = 0
down = 1
# print(res)
out = ""
for i in res:
out = out + "".join(i)
return out