Leetcode6. N字形变换
创始人
2024-05-26 13:04:30
0

一、题目描述:

将一个给定字符串 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,numRows−2)

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

      j={i%T,i%Ti%T,T−i%T,​i%T

  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
    

相关内容

热门资讯

17个低碳氢应用场景引领 湖南... 00:12(三一氢能建成制氢加氢一体站。图源三一氢能。)华声在线7月8日讯(全媒体记者 谢卓芳)近日...
景区关闭、群众转移……台风“丹...   浙江省气象部门预计,台风“丹娜丝”将于今天傍晚到夜间在台州到宁德一带沿海登陆(最大可能在温岭到霞...
专家解读|柴强:全面辩证长远看... 转自:中国建设新闻网作者系全国政协委员,中国房地产估价师与房地产经纪人学会会长、研究员自去年9月26...
李迅雷:美元在走弱,但仍是强势...   中泰国际首席经济学家李迅雷7月8日在直播中表示,虽然现在美元在贬值,但是美元作为一个全球的霸主货...
【环球财经】新加坡海峡时报指数... 转自:新华财经新华财经新加坡7月8日电(记者刘春涛)新加坡海峡时报指数8日涨0.4%,收于4047....
日产将缩减新款电动汽车生产计划  共同社周二报道称,由于零部件短缺,日产汽车正缩减其新款聆风电动汽车的生产计划。  这款计划于今年晚...
呼和浩特武川县校园风采展示交流... 转自:草原云7月8日,“循北疆红迹·绘文明校韵”武川县校园风采展示交流活动暨护航困境儿童逐梦之旅关爱...
江苏南北结对:双向人才“造血”... 中新网南京7月8日电 题:江苏南北结对:双向人才“造血”促转型作者 孙青 陈曦 徐素素近日,江苏省盱...
四川泸州一婚车队遇连环车祸,警... 7月8日,有网友发视频称在四川泸州市泸县G246国道上,一结婚车队遭遇连环车祸。从视频上看,有多辆汽...
退市锦港:关于公司部分高级管理...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 锦州港股份有限公司关...