力扣题库刷题笔记7--N

news2024/11/26 2:41:52

1、题目如下:

2、个人Python代码实现:

        看到此题的第一反应就是,生成一个类似二维数组的多个字符串,然后用个标志位控制N字符中字符的方向,例如flag = True,在每次循环时候以flag = flag * -1来控制。

        由于示例中字符串s可能看的不是很确切,所以为了更好的理解,于是自定义了一个字符串

s = "ADINSXTOJEBFKPUYVQLGCHMRWZ",numRows = 6。这样其进行N字型变换后,会按照英文字母排序,接下来用Excel加深理解:

 

 

        以上图为例,原本的思路是根据numRows生成对应个数的字符串,“ABC”、“DEFGH”以此类推,最后将字符串求和,中间有个点是需要通过标志位控制字符方向。由于个人确实不擅长生成二维数组类似的操作,所以换个思路,采用循环的方式,也就是最初思路中生成的字符串个数,转换成循环次数即可。关于上图,做以下解释:

        a、表的行数代表了循环次数,循环次数的值也就是numRows,那么这里就会出现一个问题,每一次循环在字符串s中取多少个字符呢?取得字符个数可以理解为表里面有多少种颜色。

换种说法就是,外部循环次数为numRows,内部循环通过字符下标去判断循环次数,这里经过过观察,每一次内部循环次数其实是math.ceil(len(s) / 2* (nowRows - 1)),如果这里次数不理解,可以参照上表字符A到字符E是第一次循环,字符B到字符G代表第二次循环(如果有小伙伴表示这个循环的方式和表中的背景颜色不同,也可以理解成T-Y是第一次,V-Z是第二次)

        b、第一列加粗的不算是一次内部循环,这里可以理解成每一次内部循环开始前,需要去定位从哪个字符开始取,所以第一列就是用于定位的

        c、针对有背景色的数字做个解释,其中的数字代表的是他与他左侧的字符的距离。以第2行为例,字符是DEFGH,D是第2次内部循环开始前,从D开始取,而DE、EF、FG、GH之间的下标差分别是8282,所以在最后的表里面第2行的值 分别就是18282。

        d、继续观察,N字型转换的竖列之间下标差都是2 * (numRows - 1),参考下面两个图

 

       

        针对以上几个点,可以开始写代码了:

 

        代码如下:

class Solution:

    def convert(self, s: str, numRows: int) -> str:

        if numRows >= len(s) or numRows == 1:               #当numRows值大于等于字符串s长度时,直接返回字符串s

            out_put = s

        else:

            num1 = 0                        #num1用于记录外部循环次数

            num2 = math.ceil(len(s) / (2 * (numRows - 1)))    #num2用于判断内部循环次数,这里注意向上取整  

            num = 2 *(numRows - 1)          #num用于记录N字型竖列之间的下标差

            out_put = ''                    #用于输出

            while num1 < numRows:

                temp = s[num1]              #初始化每一次循环开始,从哪个下标开始取字符

                out_put += temp             #将初始化的字符加入out_put

                i = 1

                if num1 == 0 or num1 == (numRows - 1):   #当循环不是第一次或者最后一次时,每一次内部循环只取1个字符加入out_put

                    while i <= num2:                        

                        num4 = num1 + num * i

                        try:

                            out_put += s[num4]

                        except:

                            pass

                        i += 1

                    num1 += 1

                else:                                   

                    while i <= num2:

                        num4 = num1 + num * i

                        num3 = num4 - 2 * num1

                        try:

                            out_put += s[num3]

                            out_put += s[num4]

                        except:

                            pass

                        i += 1

                    num1 += 1

        return out_put

3、题解Python实现:

        这里只截个图,思路实际上是我最初的思路,但是我知道杂生成多个字符串,也写不到这么简洁,膜拜。

 

 

 

        

 

 

 

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

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

相关文章

嵌套虚拟机-Win10下的-wmware中的Ubuntu1804-使用KVM-安装win和ubuntu虚拟机

一、物理机操作 参考博文-CSDN-林麦安 -关于“ VMware Workstation 16 此平台不支持虚拟化的Intel VT-x/EPT. 不使用虚拟化的Intel VT-x/EPT,是否继续&#xff1f;”的有关问题的总结解答 在windows物理机搜索&#xff1a;内核隔离 把开关置为关 但是我的物理机这个选项已经是…

学习系统编程No.24【深入学习信号】

引言&#xff1a; 北京时间&#xff1a;2023/6/13/19:07&#xff0c;伴随着期末考的来临&#xff0c;最近停课啦&#xff01;无论是线上课&#xff0c;还是学校的课&#xff0c;开心&#xff0c;那这不是咱持续更文的好时候嘛&#xff0c;但是今天在学习相关C知识时&#xff0…

华为防火墙之安全策略

1.安全策略初体验 安全策略在防火墙转发报文的过程中扮演着重要角色&#xff0c;只有安全策略允许通过&#xff0c;报文才能在安全区域之间流动&#xff0c;否则报文将被丢弃。 先来看一个简单的网络环境&#xff0c;如下图&#xff1a; 如果想在防火墙上允许PC访问Web服务器…

NOTA-(COOt-Bu)3-Bn-NCS:一款多功能四氮杂环螯合剂标记

文章关键词&#xff1a;双功能螯合剂&#xff0c;大环化合物&#xff0c;有机双功能DOTA&#xff0c;金属离子螯合剂&#xff0c;四氮杂环螯合剂标记 【产品描述】 NOTA及其衍生物是新型双功能整合剂之一。NOTA及其衍生物具有良好的配位和鳌合能力&#xff0c;可作为过渡金属离…

vmstat调优命令

目录 一、vmstat命令描述 二、vmstat的语法格式 三、压力测试工具stress 实验&#xff1a; 模拟I/O负载 查看是哪个进程I/O读写高:pidstat -d (-d参数查看各进程io情况&#xff09; 总结 一、vmstat命令描述 vmstat命令&#xff1a; 用来获得有关进程、虚存、页面交换…

ChatGPT写文章

ChatGPT写小文章 只是个人对写小XX的心得?从知乎,知网自己总结的,有问题,可以留个言我改一下 被CSDN制裁过 关键词:论文 文章目录 ChatGPT写小文章-1.写XX模仿实战(狗头)0.XX组成1.好XX前提:2.标题3.摘要4.关键词5.概述6.实验数据、公式或者设计7.结论&#xff0c;思考8.参…

vsce报错The Personal Access Token verification has failed.,vsce login登录时同报此错的解决办法

本篇文章主要讲解vscode插件开发提交插件版本时出现的token报错问题的解决办法。 日期:2023年6月15日 作者:任聪聪 报错现象 1.vsce login 用户id报错如下: 具体报错内容: The Personal Access Token verification has failed. Additional information: Error: {"…

7.vue3医疗在线问诊项目 - _极速问诊-支付功能实现 ==> 预支付信息渲染、支付流程解析、订单生成、支付完成

7.vue3医疗在线问诊项目 - _极速问诊-支付功能实现 > 预支付信息渲染、支付流程解析、订单生成、支付完成 问诊支付-路由和预支付信息渲染{#pay-html} 实现&#xff1a;问诊页面路由配置&#xff0c;获取问诊预支付信息并渲染。 需求&#xff1a; 配置预订单信息页面路由定…

[学习笔记] [机器学习] 12. [上] HMM 隐马尔可夫算法(马尔科夫链、HMM 三类问题、前后后向算法、维特比算法、鲍姆-韦尔奇算法、API 及实例)

学习目标&#xff1a; 了解什么是马尔科夫链知道什么是 HMM 模型知道前向后向算法评估观察序列概率知道维特比算法解码隐藏状态序列了解鲍姆-韦尔奇算法知道 HMM 模型 API 的使用 1. 马尔科夫链 学习目标&#xff1a; 知道什么是马尔科夫链 在机器学习算法中&#xff0c;马…

【MySQL入门】-- 数据库介绍

目录 1.为什么要使用数据库&#xff1f; 2.数据库相关概念 3.数据库与数据库管理系统的关系 4.常见数据库排名 5.常见数据库的简单介绍 6.MySQL介绍 7.MySQL版本的选择 8.关系型数据库和非关系型数据库 9.关系型数据库设计规则以及规范 10.表的关系&#xff08;一对…

【Proteus仿真】51单片机+ADC0808模数转换数码管显示

【Proteus仿真】51单片机+ADC0808模数转换数码管显示 📺Proteus仿真演示: 📗ADC0808主要数据参数简介 8路输入通道,8位A/D转换器,即分辨率为8位:0 - 255。转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。模拟输入电压范围0~+5V,不需零点和满刻度校准。…

谷粒商城第一天-项目概述、架构、Linux环境搭建

目录 一、学习的内容 一、常见的商城模式 二、谷粒商城项目的微服务架构 三、谷粒商城项目的微服务划分 四、谷粒商城项目的亮点 五、微服务的基本的概念 二、完成的进度 三、学到的东西 四、总结 6月9日正式下决心开始学习谷粒商城项目&#xff0c;之前早就听说谷粒商…

Powerjob部署安装

安装思路: 1、本地环境和具体生产环境都要安装部署jdk-------------------参考jdk安装 2、本地部署maven-------------------参考maven安装 3、本地部署powerjob 4、生成jar包,上传生产环境启动 部署: 1、下载上传Powerjob包,本次选取4.0.1版本 https://github.com/Powe…

arx程序与cgal冲突的地方,记录一下

arx本身是个dll&#xff0c;而且运行库是 /md&#xff0c;多线程&#xff0c;无论debug还是release都是/md&#xff0c;而不是/mtd cgal编译出来的库&#xff0c;release版本是Mt&#xff0c;debug版本是MTd 感觉debug版本是MTd对arx没用&#xff0c;不知道这种看法对不对&…

stable diffusion webui 安装部署(linux系统)

文中部署stable diffusion webui所使用的机器是腾讯云服务器linux系统&#xff0c;centos7 一 环境准备 在这里使用anaconda安装&#xff0c;优势就是可以方便地安装和管理软件包&#xff0c;同一系统上可以同时使用不同版本的 Python 和第三方软件包。如果你需要安装多个系统…

图像目标检测 - CenterNet: Objects as Points (arXiv 2019)

CenterNet: Objects as Points - 目标作为点&#xff08;arXiv 2019&#xff09; 摘要1. 引言2. 相关工作3. 准备工作4. 目标作为点4.1 3D 检测4.2 人体姿态估计 5. 实施细节6. 实验6.1 目标检测6.1.1 附加实验 6.2 3D 检测6.3 姿态估计 7. 结论References附录A&#xff1a;模型…

华为防火墙之攻击防范

1.DoS攻击简介 攻击和防御技术发展史 DoS是Denial of Service的简称&#xff0c;即拒绝服务。造成DoS的攻击行为被称为DoS攻击&#xff0c;其目的是使计算机或网络无法正常提供服务。 2.单包攻击及防御 最常见的DoS攻击就是单包攻击&#xff0c;一般都是以个人为单位的攻击者…

回归预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元多输入单输出回归预测 预测效果 基本介绍 MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元多输入单输出回归预测&#xff0c;运行环境Matlab2020b及以上。优化正则化率、学习率、隐藏层单元数。…

大数据Doris(四十二):Routine Load导入Kafka数据到Doris

文章目录 Routine Load导入Kafka数据到Doris 一、创建 Doris 表 二、创建 Kafka topic 三、创建 Routine Load

PTA OJ 合集 C语言

目录 7-1 查找整数 7-2 大笨钟的心情 7-3 将数组中的数逆序存放 7-6 矩阵运算 7-7 求矩阵的局部极大值 7-8 矩阵A乘以B 7-9 找鞍点 6-1 查找数组元素最大值 6-2 在数组中查找指定元素 7-5 求数列之和[A] 6-3 使用函数的选择法排序 6-5 计算天数[2] 6-4 求矩阵不靠…