# 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:
#
#
# P A H N
# A P L S I I G
# Y I R
竖着写,Z字型排列,然后横着打印
# leetcode submit region begin(Prohibit modification and deletion)
class Solution:
def convert(self, s: str, numRows: int) -> str:
cycle_index_list = []
for i in range(numRows):
cycle_index_list.append(i)
# 画出来找索引的规律,找到0121循环体--3
# 0121对应这[PAYP][ALIS][HIRI]这种循环
for i in range(numRows-2, 0, -1):
cycle_index_list.append(i)
print(cycle_index_list)
while len(cycle_index_list) < len(s):
cycle_index_list = cycle_index_list + cycle_index_list
# cycle_index_list比s长了无所谓
# 映射后,就知道原s每个i位置的元素在第几行了
# PAYPALISHIRING
# 0121012101210121
# 说明P,A,H,N在第零行
# A,P,L,S,I,I,G在第一行
print(cycle_index_list)
# 结果是个二维数组,cycle_index_list的0121对应这个二维数组的行索引
res_matrix = [
[]
for _ in range(numRows)
]
for i, value in enumerate(s):
line_index = cycle_index_list[i]
res_matrix[line_index].append(value)
print("res_matrix:", res_matrix)
res = []
for row in res_matrix:
for item in row:
res.append(item)
print("res:", "".join(res))
return "".join(res)
# leetcode submit region end(Prohibit modification and deletion)
if __name__ == '__main__':
s= Solution()
s.convert("PAYPALISHIRING", 3)
———————————————–
如果是第一次阅读文章,可以看看下面的话。
以上内容由平时积累而成,尽量保证代码与注释合在一起,并未做过多篇幅的解释。不一定是最优解,但一定是自己能看得懂的。有疑问的地方还请留言评论。如果题干是原题,就没有写在文章中。后续内容会慢慢发出
欢迎大家评论,收藏和转发。
感谢大家的点赞和关注。
先赞后看,年薪百万
红帽帽,白签签,一起排队做酸酸。愿疫情早日过去。
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3231169@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.dawenyou.com/9014.html
如若转载,请注明出处:https://www.dawenyou.com/9014.html