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

Leetcode6. N字形变换

一、题目描述:

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:

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

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

string convert(string s, int numRows);

  1. 示例 1:

    输入:s = “PAYPALISHIRING”, numRows = 3
    输出:“PAHNAPLSIIGYIR”

  2. 示例 2:

    输入:s = “PAYPALISHIRING”, numRows = 4
    输出:“PINALSIGYAHRPI”

  3. 示例 3:

    输入:s = “A”, numRows = 1
    输出:“A”

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

二、解决思路和代码

  1. 解决思路

    • 找规律:每一行中,当前的字母与下一个字母之间的间隔TTT: T=numsRows+max(0,numRows−2)T = numsRows+max(0, numRows-2)T=numsRows+max(0,numRows2)

    • 对于字符串 s ,索引为 i 的字符在 z 字形中位于第 j 行

      j={i%T,i%T<numRowsT−i%T,i%T≥numRowsj = \begin{cases} i \% T, & i \% T < numRows \\ T-i \% T, & i \% T \geq numRows\\ \end{cases} j={i%T,Ti%T,i%T<numRowsi%TnumRows

  2. 代码

    class Solution:def convert(self, s: str, numRows: int) -> str:## 借助字典记录每一行的字符resDict = {}for idx in range(numRows):resDict[idx] = ''## 周期遍历查找T = numRows + max(0, (numRows - 2))for idx,stri in enumerate(s):if idx%T < numRows:resDict[idx%T] += strielse:resDict[T-idx%T] += stri## 打印输出res = ''       for key in resDict.keys():res += resDict[key]return res
    
http://www.lryc.cn/news/16700.html

相关文章:

  • 将Nginx 核心知识点扒了个底朝天(十)
  • GPU显卡环境配置安装
  • CIMCAI super unmanned intelligent gate container damage detect
  • web概念概述
  • 编译原理笔记(1)绪论
  • MySQL(八)
  • steam搬砖项目,小投入高回报,可放大操作,(内附教学资料)
  • 华为OD机试真题Python实现【最多提取子串数目】真题+解题思路+代码(20222023)
  • day32 多线程(上)
  • 【flink】 各种join类型对比
  • 常用正则表达式
  • PMP考试有没有什么技巧可以介绍一下么?
  • 2022-2023年营销报告(B站平台) | 5大行业势态、流量大盘全景洞察
  • Python的异常与工具包
  • 基于SSM的婴幼儿商城
  • 2023年新能源汽车行业研究报告
  • 手写Promise方法(直击Promise A+规范)
  • GooglePlay SSL Error Handler
  • OpenStack手动分布式部署Keystone【Queens版】
  • AAPT2
  • kafka学习
  • 坐拥两条黄金赛道,爱博医疗未来必是星辰大海!
  • DEV C++的使用入门程序做算术运算
  • 华为OD机试真题Python实现【商人买卖】真题+解题思路+代码(20222023)
  • 随想录二刷(数组二分法)leetcode 704 35 34 69 367
  • 【微信小程序】--WXML WXSS JS 逻辑交互介绍(四)
  • c/c++开发,无可避免的模板编程实践(篇八)
  • Leetcode13. 罗马数字转整数
  • 元宇宙对营销方式的影响
  • PERCCLI命令行程序说明