leetcode代码记录(Z 字形变换

目录

  • 1. 题目:
  • 2. 我的代码:
  • 小结:

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”

2. 我的代码:

class Solution:def convert(self, s: str, numRows: int) -> str:# 排除特殊情况if len(s) == 1 or len(s) == 2 or numRows == 1:return s# 各行的元素row = [[] for i in range(numRows)]k = (numRows - 1) * 2for i in range(len(s)):row[(numRows - 1) - abs((i % k) - (numRows - 1))].append(s[i])result = []for r in row:result += rreturn "".join(result)

由于是个周期类型分布的,所以我们对周期k取余,就可以把所有的索引放到第一个周期里,这样就好判断了。

这里周期为(numRows - 1) * 2,取余后得到第一周期内的索引,然后再减去第一周期内的中轴,再求绝对值。得到的就是到中轴的距离,从而用(numRows - 1)减去其可以判断得到对应的行索引(前面定义好的),在对应的行索引存入元素即可。

最后每行相连就是最终答案。

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《QT实用小工具·二十五》日志重定向输出

1、概述 源码放在文章末尾 日志重定向输出,包含如下功能: 支持动态启动和停止。支持日志存储的目录。支持网络发出打印日志。支持输出日志上下文信息比如所在代码文件、行号、函数名等。支持设置日志文件大小限制,超过则自动分文件&#xf…

Unity笔记之下拉刷新列表

这样的效果; 代码: using System; using System.Collections; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class ScrollRectUpdateView : Mon…

NLP中的Transformer,一文掌握

Transformer变压器模型的出现 2017 年,Vaswani 等人在关键论文“Attention is All You Need”中介绍了 Transformer 模型,它标志着与以前占主导地位的基于递归神经网络的模型(如 LSTM(长短期记忆)和 GRU(门…

北京大学快手发布统一的图文视频生成大模型Video-LaVIT

随着多模态大语言模型(LLMs)的新发展,人们越来越关注如何将它们从图像-文本数据扩展到更具信息量的真实世界视频。与静态图像相比,视频为有效的大规模预训练带来了独特的挑战,因为需要对其时空动态进行建模。 针对视频…

【JavaEE初阶系列】——网络原理之进一步了解应用层以及传输层的UDP协议

目录 🚩进一步讲应用层 🎈自定义应用层协议 🎈用什么格式组织 👩🏻‍💻xml(远古的数据组织格式) 👩🏻‍💻json(当下最流行得一种数据组织格式) 👩&…

[lesson31]完善的复数类

完善的复数类 完善的复数类 复数类应该具有的操作 运算:,-,*,/比较:,!赋值:求模:modulus 利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式 注意事项 C规定赋…

【max材质addtive叠加模式特效渲染不出通道的解决办法】

max材质addtive叠加模式特效渲染不出通道的解决办法 2021-12-22 18:15 max的scanline扫描线,vray渲染可以,红移不行(只支持它自己的材质,它自己的材质没有additive模式)。据说mr是可以的。 右侧的球体使用附加不透明度。 附加不透明度通过将…

C++内存管理与模版(用法详解)

C/C中程序内存区域划分 内核空间(用户代码不能读写)栈(函数中存放的变量)内存映射段堆(重点)数据段(静态区)全局变量 / 静态变量代码段(常量区) 试分析下列…

Opencv3.4+FFMpeg3.4+pkg-config交叉编译arm开发板

Ubuntu16.04 64位 FFmpeg3.4 OpenCv3.4 一、下载FFmpeg https://github.com/FFmpeg/FFmpeg 1.配置 ./configure --prefix/home/zeng/ffmpeg_install --enable-cross-compile --cross-prefixarm-linux-gnueabihf- --ccarm-linux-gnueabihf-gcc --target-oslinux --cpuco…

负载均衡器如何工作,为什么如此重要?

现代应用程序和网站处理大量流量。负载均衡器是保证大型系统平稳运行的主要工具之一。 负载平衡器负责跨多个服务器路由客户端请求以分配负载并防止出现瓶颈。 这有助于最大限度地提高吞吐量、减少响应时间并优化资源使用。 负载均衡器的运行情况: (1).客户端请…

阿姨吐槽年轻人卧铺挂帘子不让坐 评论区吵翻天了

近日,网络流传的一段短视频激起了公众的广泛热议。 这段视频展现了一位阿姨与在下铺挂帘子的年轻人之间的冲突。 视频中,阿姨情绪激动,她用镜头对准了那位年轻人,指责他在下铺挂帘子,使得一位70岁的老人无法坐下。 阿姨…

EasyRecovery数据恢复软件2024免费版下载亲测可用(支持win7,win10)

EasyRecovery数据恢复软件是由全球著名的数据恢复公司Ontrack出品的一款专业级数据文件恢复工具。它支持恢复多种存储介质上的数据,包括硬盘、光盘、U盘/移动硬盘、数码相机以及Raid文件恢复等,能恢复的文件类型也相当丰富,包括文档、表格、图…

磁盘管理和文件系统

一.磁盘基础 1.磁盘结构 (1)物理结构: 盘片:硬盘有多个盘片,每盘片2面 磁头:每面一个磁头 (2)硬盘的数据结构 扇区:盘片被分为多个扇形区域,每个扇区存…

Django之rest_framework(四)

扩展的视图类介绍 rest_framework提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这几种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量 官网:3 - Class based views - Django REST framework rest_framework.mixi…

冯喜运:4.16市场洞察:中东风暴搅动汇市,现货黄金原油走势分析

【黄金消息面分析 】周一(4月15日),欧洲时段黄金价格已经从高点回落,目前交投于2351.52美元/盎司,稍早曾短暂攀至2372美元,未能重现上周收盘时触及的2431美元高位。定于周一晚些时候公布的美国3月零售销售数据也可能对美元汇率产生…

2024 EasyRecovery三分钟帮你恢复 电脑硬盘格式化

随着数字化时代的到来,我们的生活和工作中越来越依赖于电子设备。然而,电子设备中的数据丢失问题也随之而来。数据丢失可能是由各种原因引起的,如硬盘故障、病毒感染、误删除等。面对这种情况,一个高效、可靠的数据恢复工具变得尤…

轻量级的Spring Cloud Gateway实践,实现api和websocket转发

当国内大部分都是粘贴复制一些重型框架时,有没有人会想到,我们自己做一个小项目,几个小的Spring boot的项目时,我们是否还需要按部就班的用我们公司中用到的Nacos,这种冗余且调配复杂的组件呢? 不是本人说…

华为HarmonyOS 4.2公测升级计划扩展至15款新机型

华为近日宣布,HarmonyOS 4.2操作系统的公测升级计划将扩展到包括华为P50系列在内的15款设备。这一更新旨在为用户提供更优化的系统性能和增强的功能。 参与此次公测的机型包括华为P50、华为P50 Pro及其典藏版、华为P50E、华为P50 Pocket及其艺术定制版、华为nova系…

计算机笔记(11)续20个

180.时钟频率2.0GHz表示一秒有2*10的9次方个时钟周期,若执行一条指令需要2个时钟周期,则每秒执行的指令数为2*10的9次方/21*10的9次方 181.同轴电缆粗缆采用AUI头作为连接器件 182. 183.win7中的回收站,存放的是硬盘上被删除的…

【多线程】单例模式 | 饿汉模式 | 懒汉模式 | 指令重排序问题

文章目录 单例模式一、单例模式1.饿汉模式2.懒汉模式(单线程)3.懒汉模式(多线程)改进 4.指令重排序1.概念2.question:3.解决方法4总结: 单例模式 一、单例模式 单例,就是单个实例 在有些场景中&#xff0c…