题解 | #牛牛的旗语传递#
牛牛的旗语传递
https://www.nowcoder.com/practice/810b1c80a9c341c4af69facac350d6bc
- 题目考察的知识点 : 字符串
- 题目解答方法的文字分析:
- 模拟 Z 字形排列的过程,先处理第一行和最后一行,然后处理中间的 numRows-2 行,最后将结果拼接起来。具体地,我们可以使用一个变量 cycleLen 记录每个周期的长度(即两次竖直方向的距离),然后依次遍历每一行,将相应的字符添加到结果列表中。如果当前行不是第一行或最后一行,并且有对应的斜线上的字符,则也将其添加到结果列表中。
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @param numRows int整型 # @return string字符串 # class Solution: def decodeFlag(self, s: str, numRows: int) -> str: if numRows == 1: return s n = len(s) cycleLen = 2 * numRows - 2 ans = [] for i in range(numRows): for j in range(i, n, cycleLen): ans.append(s[j]) if i != 0 and i != numRows - 1 and j + cycleLen - 2 * i < n: ans.append(s[j + cycleLen - 2 * i]) return "".join(ans)
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路