题解 | #牛牛的旗语传递#
牛牛的旗语传递
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题的解法思路
查看9道真题和解析