LeetCode38. 外观数列

news/2024/10/18 12:34:33/

给定一个正整数 n ,输出外观数列的第 n 项。

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。

你可以将其视作是由递归公式定义的数字字符串序列:

countAndSay(1) = "1"
countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。
前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221
第一项是数字 1 
描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"
描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"
描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"
描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"
要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。

例如,数字字符串 "3322251" 的描述如下图:

示例 1:

输入:n = 1
输出:"1"
解释:这是一个基本样例。
示例 2:

输入:n = 4
输出:"1211"
解释:
countAndSay(1) = "1"
countAndSay(2) = 读 "1" = 一 个 1 = "11"
countAndSay(3) = 读 "11" = 二 个 1 = "21"
countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211"
 

提示:

1 <= n <= 30

void main(List<String> args) {print(countAndSay(4));
}String countAndSay(int n) {String preStr = "1";for (int i = 2; i <= n; i++) {int pos = 0;int start = 0;String curStr = "";while (pos < preStr.length) {while (pos < preStr.length && preStr[pos] == preStr[start]) {pos++;}curStr += (pos - start).toString() + preStr[start];start = pos;}preStr = curStr;}return preStr;
}

LeetCode38. 外观数列
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/count-and-say
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


http://www.ppmy.cn/news/402250.html

相关文章

实在智能RPA亮相2023全球人工智能技术博览会,“能对话的数字员工”引领智能自动化新篇章

随着ChatGPT火爆全网&#xff0c;人工智能再次成为学术界和科技领域“新宠”&#xff0c;一场“智能革命”的序幕悄然掀开。 6月13日&#xff0c;“智能驱动 砥砺前行”为主题的2023全球人工智能技术博览会在杭州未来科技城学术交流中心圆满落下帷幕。此次博览会以展示智能科技…

项目管理专业人员能力评价(CSPM)相关问题汇总,看这篇就够了!

问题导览&#xff1a; 1、国标项目管理&#xff08;项目管理专业人员能力评级&#xff09;证书是什么&#xff1f; 2、国标项目管理&#xff08;项目管理专业人员能力评级&#xff09;证书有几级&#xff1f; 3、项目管理专业人员能力等级证书的价值&#xff08;含金量&#…

【微信支付】微信v3支付案例,SpringBoot集成IJPay实现微信v3支付

前言 这篇文章主要实现一下通过IJPay来实现微信v3支付案例&#xff0c;本篇文章使用的是JSAPI即小程序支付 IJPay码云仓库&#xff1a;https://gitee.com/javen205/IJPay/tree/dev IJPay官方文档&#xff1a;https://javen205.gitee.io/ijpay/ 准备工作 导入依赖 <depen…

Python对csv、ini、xml、excel等格式文件操作用例

Python文件操作相关 文件操作文件夹和路径csv格式文件ini格式文件xml格式文件excel文件 1. 文件操作 在学习文件操作之前&#xff0c;先来回顾一下编码的相关以及先关数据类型的知识。 字符串类型&#xff08;str&#xff09;&#xff0c;在程序中用于表示文字信息&#xff0…

给准将的情书64

爸爸&#xff0c;如果您不停止谈论1900年代的事情&#xff0c;人们会认为您来自1900年代&#xff01; 自从我的女儿在六岁的时候对我说上述话已经九年了&#xff0c;现在我几乎已经原谅了她。 我仍然爱她&#xff0c;但这个故事与她无关。 不&#xff0c;这故事讲的是我的初恋&…

高德地图 AMAP-TECH 算法大赛火热进行中······

阿里巴巴高德地图 AMAP-TECH 算法大赛于 7 月 8 日开启初赛&#xff0c;赛题为「基于车载视频图像的动态路况分析」&#xff0c;活动邀请了业界权威专家担任评委&#xff0c;优秀选手不仅可以瓜分丰厚的奖金&#xff0c;领取荣誉证书&#xff0c;还有机会进入高德地图【终面通道…

个性化推荐之召回的方法

在这个信息爆炸的时代&#xff0c;每个人都是内容的消费者&#xff0c;也轻而易举地可以成为内容的创造者。在海量的信息中&#xff0c;用户找到所需、所想、所爱的优质内容变得异常困难&#xff0c;个性化推荐也因此应运而生。 个性化推荐是在大数据分析和人工智能技术的基础…

50个出色的Adobe After Effects教程

Adobe After Effects是一种数字运动图形和合成软件。 其主要目的是用于电影和视频后期制作。 借助Adobe After Effects,可以创建像“好莱坞风格”电影中那样精美的视觉效果。 Adobe After Effects主要用于创建广告和电影的视觉效果,但是您还可以创建图像幻灯片,一些小视频,…