解题思路:
这个题目比较简答,直接可以用O(n)的时间复杂度来解决,其实z字形就是来回摆动,初始化一个长度为numRows的一个列表,然后一次for循环,摆动将字符串中的字符加入到列表中的元素中,最后将列表中的元素拼接到一起即可。
具体代码如下:
class Solution:
def convert(self, s: str, numRows: int) -> str:
res_list = ['']*numRows
forward = True
ptr = 0
if numRows == 1:
return s
for char in s:
if ptr == numRows - 1 and forward:
forward = False
res_list[ptr] += char
ptr -= 1
elif ptr >= 0 and ptr < numRows - 1 and forward:
res_list[ptr] += char
ptr += 1
elif ptr > 0 and not forward:
res_list[ptr] += char
ptr -= 1
elif ptr == 0 and not forward:
res_list[ptr] += char
ptr += 1
forward = True
else:
print(ptr)
print('还有情况没考虑到!')
return ''.join(res_list)