当前位置: 首页 > news >正文

6.z字形变换(python)

1.题目

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

P   A   H   N
A P L S I I G
Y   I   R

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

示例 1:

输入:s = "PAYPALISHIRING", numRows = 3
输出:"PAHNAPLSIIGYIR"

示例 2:

输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"
解释:
P     I    N
A   L S  I G
Y A   H R
P     I

示例 3:

输入:s = "A", numRows = 1
输出:"A"

提示:

  • 1 <= s.length <= 1000
  • s 由英文字母(小写和大写)、',' 和 '.' 组成
  • 1 <= numRows <= 1000

2.思路

如3行时,我们建立一个数组res,数组包含3个“”元素,则在遍历s = "PAYPALISHIRING"的过程中,对res根据index依次由前到后和由后到前的加入s的元素,最后再把res的各元素拼接即可。

3.代码

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if numRows<2: return s
        res = [""] * numRows
        flag = 0
        k = -1
        for i in range(len(s)):
            res[flag] += s[i]
            if flag == 0 or flag == numRows - 1:
                # flag = -flag
                k = -k
            flag += k
        ans = "".join(res)
        return ans


if __name__ == '__main__':
    s = "PAYPALISHIRING"
    numRows = 4

    hh = Solution()
    h = hh.convert(s, numRows)
    print(h)

提交结果如下:

相关文章:

  • 【消息队列】认识项目
  • 如何确定服务器是否被黑客入侵爆破
  • GO系列-IO 文件操作
  • 第三章 STM32 IIC驱动
  • 模电知识点总结(6)
  • 【后端】gitHub访问速度太慢解决办法
  • 特斯拉吹哨,自动驾驶端到端重写具身智能
  • 播放器系列1——总概述
  • uni-app(位置1)
  • 设计模式教程:解释器模式(Interpreter Pattern)
  • 高斯积分的证明
  • Grok 3.0 Beta 版大语言模型评测
  • 理解 logits_to_keep = logits_to_keep + 1 在 _get_per_token_logps 中的作用
  • 么是静态住宅IP,跨境电商为什么需要静态住宅IP
  • 杨校老师课堂之信息学奥赛结构体操作使用经典题集锦汇总
  • 力扣LeetCode: 2209 用地毯覆盖后的最少白色砖块
  • Linux C 静态库如何生成并使用
  • Javascript使用Sodium库实现 aead_xchacha20poly1305_ietf加密解密,以及与后端的密文交互
  • Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解
  • MySQL 选择数据库
  • 林诗栋/蒯曼混双取胜,国乒赢得多哈世乒赛开门红
  • 网警打谣:传播涉刘国梁不实信息,2人被处罚
  • 病愈出院、跳大神消灾也办酒,新华每日电讯:农村滥办酒席何时休
  • 美联储计划裁员约10%
  • 七猫征文大赛颁出112万奖金,非遗题材作品斩获金奖
  • 昔日千亿房企祥生集团约2.03亿元债权被拍卖,起拍价8000万元