编程思路:首先理解什么是ZigZag,所谓ZigZag就是N字型,生成ZigZag时,及时更新字符前进方向,详细介绍见下面的Python程序
class Solution:
# @return a string
def convert(self, s, nRows):
# 只有一行时
if nRows == 1:
return s
# 将行号和每行的字符串建立映射
row_str = {}
for i in range(nRows):
row_str.setdefault(i, '')
i, row = 0, 0
# 设置一个标志,当前zigzag的方向,是向下还是向上,默认向下
flag = True
while i < len(s):
row_str[row] = row_str[row] + s[i]
if flag:
row = row + 1
# 当达到最下面的一行,调整方向
if row == nRows:
row = row - 2
flag = False
else:
row = row - 1
# 当达到最上面一行,调整方向
if row == -1:
row = row + 2
flag = True
i = i + 1
result = ''
for i in range(nRows):
result = result + row_str[i]
return result