从题目描述中可知,没有将 " "输出,因此可以将数组定义为含有 numRows 个字符串的数组,每个字符串为规则内的一行元素。因此在填入字符时,只需要考虑行变化,即将元素放入数组中哪个字符串后面。可以发现,行变化是递增或递减 1 的,当行变化到顶部或底部时,改变行变化方式。
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows < 2:
return s
res = ["" for x in range(numRows)] # 创建numRows个元素的数组
i, sign = 0, -1
# 当 i 到达 0 或 numRows-1 时,即应该将下一个字符放入下一列时,改变 i 的变化方式
# i改变方式是递增 1 ,或递减 1
for chr in s:
res[i] += chr # 在第i行元素后添加字符
if i == 0 or i == numRows - 1:
sign = - sign
i += sign
return "".join(res)
本文深入探讨了将字符串以Z形方式排列并重新转换成一行的算法实现。通过定义一个包含目标行数的字符串数组,算法巧妙地利用行变化规律,实现了字符串的正确填充。当到达数组边界时,行变化方向会反转,确保了Z形布局的准确性。
——数组用法&spm=1001.2101.3001.5002&articleId=100053882&d=1&t=3&u=235d202798dc4a16b32cf3628ac2bb8e)
174

被折叠的 条评论
为什么被折叠?



