ZigZag Conversion(6) -medium

博客围绕ZigZag Conversion题目展开,先描述题目,接着给出解题思路,即遍历字符串确定行数和字符所在行,在第0行和第numRows - 1行改变方向。还给出Python代码,并进行复杂度分析,时间和空间复杂度均为O(n)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6 — ZigZag Conversion

1. 题目描述

在这里插入图片描述

2. 思路

分析题目:

  • 遍历字符串, 确定有几行, 确定每个字符在第几行。 两个转折点:在第0行和第numRows-1行处,要改变方向,也就是curRow变量加一还是减一。
3. Python代码:
def convert(s: str, numRows: int):
    rowLength = min(len(s), numRows)
    
    rows = []
    
    if numRows == 1: return s
    else :
        for i in range(rowLength):
            rows.append('')
    
    
    goDown = False
    curRow = 0
    for i in range(len(s)):
        rows[curRow] += s[i]
        if curRow == 0 or curRow == numRows - 1: 
            goDown = not goDown
        if goDown: curRow += 1
        else: curRow -=1
    
    res = ''
    for i in range(rowLength):
        res += rows[i]
    return res

4. Complexity Analysis:

Time complexity : O(nnn). 这里的 n == len(s)
Space complexity : O(nnn).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值