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

LeetCode 6. Z 字形变换

LeetCode 6. Z 字形变换

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:
在这里插入图片描述
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入:s = “PAYPALISHIRING”, numRows = 3
输出:“PAHNAPLSIIGYIR”
示例 2:
输入:s = “PAYPALISHIRING”, numRows = 4
输出:“PINALSIGYAHRPI”
解释:
在这里插入图片描述
示例 3:
输入:s = “A”, numRows = 1
输出:“A”
提示:
1 <= s.length <= 1000
s 由英文字母(小写和大写)、‘,’ 和 ‘.’ 组成
1 <= numRows <= 1000

蛮力法:直接挨个计算元素坐标然后计算

class Solution:def convert(self, s: str, numRows: int) -> str:if numRows == 1:return sunit_num = numRows * 2 - 2res = ""for i in range(numRows):  # numRows - 1 + 1for j in range(i, len(s), unit_num):res += s[j]if i % (numRows - 1) != 0:k = j - i + unit_num - iif k < len(s):res += s[k]return res

大佬的解法,核心在于有几行就分别构造几行数据,然后 join,连续行立个 flag 进行转向

class Solution:def convert(self, s: str, numRows: int) -> str:if numRows < 2: return sres = ["" for _ in range(numRows)]i, flag = 0, -1for c in s:res[i] += cif i == 0 or i == numRows - 1: flag = -flagi += flagreturn "".join(res)# 作者:Krahets
# 链接:https://leetcode.cn/problems/zigzag-conversion/solutions/21610/zzi-xing-bian-huan-by-jyd/# 
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
http://www.lryc.cn/news/377743.html

相关文章:

  • RTC实时时钟
  • WHAT - React 学习系列(一)
  • 代理模式(静态代理/动态代理)
  • Word2Vec基本实践
  • IIS配置網站登錄驗證,禁止匿名登陸
  • 抖音矩阵系统搭建,AI剪辑短视频,一键管理矩阵账号
  • 山东大学软件学院创新项目实训开发日志——收尾篇
  • vue2.7支持组合式API,但是对应的vue-router3并不支持useRoute、useRouter。
  • 摊位纠纷演变肢体冲突,倒赔了500:残疾夫妇与摊主谁之过?
  • 深入理解和实现Windows进程间通信(消息队列)
  • Web网页前端教程免费:引领您踏入编程的奇幻世界
  • 北斗短报文终端在应急消防通信场景中的应用
  • Java跳动爱心代码
  • Swift Combine — Operators(常用Filtering类操作符介绍)
  • Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?
  • 韩顺平0基础学Java——第27天
  • YesPMP探索Python在生活中的应用,助力提升开发效率
  • TikTok账号运营:静态住宅IP为什么可以防封?
  • linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本
  • HTML+CSS+PHP实现网页留言板功能(需要创建数据库)
  • 【谷歌】实用的搜索技巧
  • 打造完美启动页:关键策略与设计技巧
  • 电子书(chm)-加载JS--CS上线
  • 理解HTTP请求格式
  • 差分数组汇总
  • SpringBoot | 实现邮件发送
  • spring boot接入nacos 配置中心
  • 产品应用 | 小盒子跑大模型!英码科技基于算能BM1684X平台实现大模型私有化部署
  • uniapp中u-input点击事件失效
  • [机器学习] 监督学习和无监督学习