【LeetCode】38.外观数列

外观数列

题目描述:

「外观数列」是一个数位字符串序列,由递归公式定义:

  • countAndSay(1) = "1"
  • countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。

行程长度编码(RLE)是一种字符串压缩方法,其工作原理是通过将连续相同字符(重复两次或更多次)替换为字符重复次数(运行长度)和字符的串联。例如,要压缩字符串 "3322251" ,我们将 "33" 用 "23" 替换,将 "222" 用 "32" 替换,将 "5" 用 "15" 替换并将 "1" 用 "11" 替换。因此压缩后字符串变为 "23321511"

给定一个整数 n ,返回 外观数列 的第 n 个元素。

示例 1:

输入:n = 4

输出:"1211"

解释:

countAndSay(1) = "1"

countAndSay(2) = "1" 的行程长度编码 = "11"

countAndSay(3) = "11" 的行程长度编码 = "21"

countAndSay(4) = "21" 的行程长度编码 = "1211"

示例 2:

输入:n = 1

输出:"1"

解释:

这是基本情况。

提示:

  • 1 <= n <= 30

思路分析:

        根据题意进行模拟,从起始条件 k=1 时 ans = "1" 出发,逐步递推到 k=n 的情况,对于第 k 项而言,其实就是对第 k−1项的「连续段」的描述,而求「连续段」长度,可以使用双指针实现。

代码实现注解:

class Solution {public String countAndSay(int n) {//设ans的初始值为1String ans = "1";for(int i= 2; i<=n;i++){//cur用来存放当前连续段String cur = "";//len为前一个连续段的长度int len = ans.length();//遍历前一个连续段得到当前描述for(int j = 0;j<len; ){//k指向当前遍历位置int k = j+1;//判断前后两数是否相同,相同则累加while(k<len && ans.charAt(j) == ans.charAt(k))k++;//cnt用来记录重复数的个数int cnt = k-j;//拼接得到curcur += cnt + "" + ans.charAt(j);//将j移动到当前遍历位置j = k;}ans = cur;}return ans;}
}

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

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

相关文章

【python】修改目标检测的xml标签(VOC)类别名

需求&#xff1a; 在集成多个数据集一同训练时&#xff0c;可能会存在不同数据集针对同一种目标有不同的类名&#xff0c;可以通过python脚本修改数据内的类名映射&#xff0c;实现统一数据集标签名的目的。 代码&#xff1a; # -*- coding: utf-8 -*- # Time : 2023/9/11 1…

SOLIDWORKS教育版:提供学生所需的资源

SOLIDWORKS教育版是一款专为学生和教育工作者设计的3D CAD软件&#xff0c;它拥有强大的设计功能和用户友好的界面&#xff0c;让你轻松实现创新设计的梦想。这款软件不仅提供了丰富的教程和案例&#xff0c;还为学生提供了各种学习资源和支持&#xff0c;让你在学习的道路上不…

Python程序设计 身份证号的奥秘

第1关&#xff1a;判断性别 通过身份证的第17位也就是倒数第二位的数字可以辨别该身份证所属人的性别,奇数为男性,偶数为女性。 任务&#xff1a;输入身份证号&#xff0c;第17位若是偶数&#xff0c;输出男性&#xff0c;否则输出女性 如何截取字符串的一个字符 如何判断一个…

数据持久化第七课-URL重写与Ajax

数据持久化第七课-URL重写与Ajax 一.预习笔记 1.URL重写(对网页地址进行保护) 首先编写module,实现对网络地址的处理 其次就是module的配置 最后验证url重写技术 2.Ajax数据交互 编写后端响应数据 处理跨域的配置问题 运行项目得到后端响应数据的地址 编写前端ajax进行数据请…

【Python】 如何优雅地终止 Python 中的线程

基本原理 在 Python 中&#xff0c;线程&#xff08;Thread&#xff09;是一种执行并行计算的基本单位。然而&#xff0c;有时候我们需要在特定条件下终止一个正在运行的线程。Python 的标准库 threading 并没有提供直接终止线程的方法&#xff0c;因为强制终止线程可能会导致…

AC 800PEC 高性能控制系统GFD563A101 3BHE046836R0101

AC 800PEC 控制系统对于大功率整流器应用具有极快控制算法的高性能应用 –快速控制的周期时间范围为100 μs(微秒) 长期操作瞬变的循环至秒-要求专用控制设备。这就是为什么我们设计了AC 800PEC&#xff0c;扩展ABB著名的自动化技术来处理高速电力电子等过程的算法应用程序。 …

github有趣项目:Verilog在线仿真( DigitalJS+edaplayground)

DigitalJS https://github.com/tilk/digitaljs这个项目是一个用Javascript实现的数字电路模拟器。 它旨在模拟由硬件设计工具合成的电路 像 Yosys&#xff08;这里是 Github 存储库&#xff09;&#xff0c;它有一个配套项目 yosys2digitaljs&#xff0c;它可以转换 Yosys 将文…

汽车IVI中控开发入门及进阶(二十四):杰发科技AC8015

前言: 在此之前的大部分时间,四维图新更多的是以图商的身份在业内出现,但现在四维图新图商之外的技术积累提现在了杰发科技身上,或者是从图商到汽车智能化一体解决方案供应商的角色转变。汽车智能化,可以简单的归为座舱智能化和智能驾驶两个板块。 随着汽车变得越来越智能…

04.docker的主要组成部分

docker体验 docker是传统的CS架构分为docker client和docker server,跟mysql一样 查看版本命令&#xff1a;docker version 查看docker下载的是社区版,ce代表社区 rpm -qa |grep docker 查看docker系统命令 docker system docker info&#xff08;如果要做监控&#xff…

13. 《C语言》——【strlen函数的使用和模拟实现】

文章目录 前言strlen函数strlen函数的使用strlen函数的3种方法实现方法1方法2方法3 总结 前言 各位老板好~ &#xff0c; 今天我们讲解strlen函数如何去使用以及如何去模拟实现strlen函数。希望各位老板能够给一个点赞和一个大大的关注&#xff0c;感谢各位老板&#xff01;str…

【翻译软件】CopyTranslator复制即翻译的外文辅助阅读翻译软件NO.102

使用平台&#xff1a;Windows/Linux/macOS 设置里选择翻译引擎和翻译API&#xff0c;谷歌翻译已经退出中国了&#xff0c;但还是提供了镜像地址 一、复制即翻译 只需要复制文本到剪贴板&#xff0c;就可以查看翻译结果 记得开启“自动粘贴”哦。 二、多段同时翻译 三、智能…

第二证券炒股知识:短线炒股技巧?

在股票商场上&#xff0c;出资者分为长线和短线这两大类&#xff0c;其中短线炒股存在以下技巧&#xff1a; 1、早盘集合竞价时刻上的技巧 早上集合竞价对短线出资者来说比较重要&#xff0c;其中早上集合竞价期间9&#xff1a;15-9:20之间出资者可以进行撤单操作&#xff0c…

新项目来了,JDK 17和JDK 21 该如何选择?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【机器学习数据挖掘】基于ARIMA 自回归积分滑动平均模型的销售价格库存分析报告 附完整python代码

资源地址&#xff1a;Python数据分析大作业 4000字 图文分析文档 销售分析 完整python代码 ​ 完整代码分析 同时销售量后1000的sku品类占比中&#xff08;不畅销产品&#xff09;如上&#xff0c;精品类产品占比第一&#xff0c;达到66.7%&#xff0c;其次是香化类产品&#…

【mysql】ssl_choose_client_version:unsupported protocol

起因&#xff1a;项目上的DolphinScheduler连接不上数据库&#xff0c;查看worker日志提到SSL协议问题&#xff1a; com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureCaused by: java.io.EOFException: SSL peer shut down incorrectly 我…

SQL Developer 导入CSV数据

之前已经写过一篇文章&#xff1a;将文本文件导入Oracle数据库的简便方法&#xff1a;SQL Developer 本文是类似的&#xff0c;只不过使用的是官方提供的 CSV文件&#xff0c;确实是标准的CSV&#xff08;comma separated values&#xff09;。 COL1,COL2,COL3 "e40a9db…

记录岁月云明细账excel导出的性能优化

财务软件报表还是非常麻烦&#xff0c;因为使用excel最好的就是财务&#xff0c;但是通过java导出excel&#xff0c;使用easyexcel不用报表工具&#xff0c;不是这么容易。采用jprofile对一个导出操作进行监控&#xff0c;其中一家零售企业导出当月全部明细账&#xff0c;检测到…

Spark的性能调优——RDD

前言 RDD 是 Spark 对于分布式数据集的抽象&#xff0c;每一个 RDD 都代表着一种分布式数据形态。比如 lineRDD&#xff0c;它表示数据在集群中以行&#xff08;Line&#xff09;的形式存在&#xff1b;而 wordRDD 则意味着数据的形态是单词&#xff0c;分布在计算集群中。 参…

使用 Django Channels 构建实时聊天应用(包含用户认证和消息持久化)

文章目录 准备工作创建 Django 项目创建应用程序配置项目编写 Consumer编写路由创建 URL 路由运行应用用户认证消息持久化显示历史消息结论 Django Channels 是 Django 的一个扩展&#xff0c;允许在 Web 应用中添加实时功能&#xff0c;例如 Websockets、HTTP2 和其他协议。本…

图片在线改dpi如何操作?电脑上改图片dpi的简单技巧

对图片dpi有数值的要求&#xff0c;需要将图片分辨率调整到要求的数值才可以上传。对于图片尺寸大小修改的方法相信很多人都知道如何处理&#xff0c;那么图片dpi的数值的修改方法是什么样的呢&#xff1f;下面就来给大家分享一下修改dpi数值的具体操作技巧。 在电脑上打开压缩…