LeetCode 38 外观数列

题目描述

外观数列

给定一个正整数 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

解法

依次统计字符串中连续相同字符的个数。

左到右依次扫描字符串 Sn−1中连续相同的字符的最大数目,然后将字符的统计数目转化为数字字符串再连接上对应的字符即可。

java代码:

class Solution {public String countAndSay(int n) {String res = "1";if (n == 1) {return res;}for (int i = 1; i < n; i++) {int count = 0;StringBuilder newRes = new StringBuilder();for (int j = 0; j < res.length(); j++) {if (count == 0 || res.charAt(j) == res.charAt(j - 1)) {count ++;} else {newRes.append(count).append(res.charAt(j - 1));count = 1;}}if (count != 0) {newRes.append(count).append(res.charAt(res.length() - 1));}res = newRes.toString();}return res;}
}

复杂度

  • 时间复杂度:O(N×M),其中 N 为给定的正整数,M 为生成的字符串中的最大长度。
  • 空间复杂度:O(M)

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

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

相关文章

软件测试|解决Github port 443 : Timed out连接超时的问题

前言 GitHub是全球最大的开源代码托管平台之一&#xff0c;许多开发者和团队使用它来管理和协作开源项目。但在当下&#xff0c;我们在clone或者提交代码时会经常遇到"GitHub Port 443: Timed Out"错误&#xff0c;这意味着我们的电脑无法建立与GitHub服务器的安全连…

学习python仅此一篇就够了(函数进阶:lambda函数)

函数进阶 函数的多返回值 def ceshi1():return 1, 2x, y ceshi1() print(x) #1 print(y) #2 函数的多种传参方式 1.位置参数&#xff1a;调用函数时根据函数定义的参数位置来传递参数 def ceshi1(name,age):print(f"你的姓名是{name},你的年龄是{age}")ceshi1(…

xtu oj 1522 格子

题目描述 一个nm的网格&#xff0c;格子里最多能放一枚棋子&#xff0c;将k枚棋子随机放入不同的网格中&#xff0c;使得同行同列最多只有一枚棋子&#xff0c;请问概率是多少&#xff1f; 输入格式 第一行是一个整数T (1≤T≤512)&#xff0c;表示样例的个数。 以后每行一…

UniRepLKNet实战:使用UniRepLKNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集一些问题 摘要 大核卷积神经网络&#xff08;ConvNets&#xff09;近年来受到广泛关注&#xff0c;但仍存在两个关键问题需要进一步研究。首先&#xff0c;目前的大型卷积神经网络架构大…

设计模式之避免共享的设计模式Copy-on-Write模式

系列文章目录 设计模式之避免共享的设计模式Immutability&#xff08;不变性&#xff09;模式 设计模式之并发特定场景下的设计模式 Two-phase Termination&#xff08;两阶段终止&#xff09;模式 文章目录 系列文章目录一、Copy-on-Write是什么&#xff1f;二、应用 一、Cop…

士兵队列 +队列queue+模拟

士兵队列 队列queue 某部队进行新兵队列训练&#xff0c;将新兵从一开始按顺序依次编号&#xff0c;并排成一行横队&#xff0c;训练的规则如下&#xff1a;从头开始一至二报数&#xff0c;凡报到二的出列&#xff0c;剩下的向小序号方向靠拢&#xff0c;再从头开始进行一至三…

javacv和opencv对图文视频编辑-按指定间隔从视频抽取缩略图

1、java代码抽取视频缩略图 直接上代码 首先pom 引入了javacv和Thumbnails <!-- 引入javacv --><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.5.6</version></dependency>…

Spring Boot - Application Events 同步 VS 异步 发布订阅事件实战

文章目录 PreCode基础工程启动类切入口事件 发布事件同步 Listener异步Listener增加EnableAsync增加 Async 测试 Pre Spring Boot - Application Events 的发布顺序_ApplicationStartingEvent Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEv…

Android Lint的使用

代码检查方式一&#xff1a; Android Studio使用Lint进行代码检查 找到Analyze目录下的Inspect Code检查代码选项点击然后弹出下面这个框框&#xff0c;在这个列表选项中我们可以选择Inspect Code的范围&#xff0c;点击OK 待分析完毕后&#xff0c;我们可以在Inspection栏目中…

安装、运行和控制AI apps在您的计算机上一键式

pinokio 你是否曾为安装、运行和自动化 AI 应用程序和大模型而感到困惑&#xff1f;是否希望有一个简单而强大的工具来满足你的需求&#xff1f;如果是这样&#xff0c;那么 Pinokio 将会是你的理想选择&#xff01;Pinokio 是一款革命性的人工智能浏览器&#xff0c;是一个开…

Nocalhost 为 KubeSphere 提供更强大的云原生开发环境

1 应用商店安装 Nocalhost Server 已集成在 KubeSphere 应用商店&#xff0c;直接访问&#xff1a; 设置应用「名称」&#xff0c;确认应用「版本」和部署「位置」&#xff0c;点击「下一步」&#xff1a; 在「应用设置」标签页&#xff0c;可手动编辑清单文件或直接点击「安装…

【Tricore】基于主流芯片, 浅谈ECU多核架构与“核间通信”

文章目录 概要 整体架构 简单聊聊什么是多核架构和“核间通信”

力扣labuladong——一刷day91

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣208. 实现 Trie (前缀树)二、力扣648. 单词替换 前言 Trie 树又叫字典树、前缀树、单词查找树&#xff0c;是一种二叉树衍生出来的高级数据结构&#x…

2024.1.13

今天想开个新坑&#xff0c;于是我就开始学习数据结构了&#xff0c;那玩意怎么说呢&#xff0c;挺抽象的东西&#xff0c;有点难懂&#xff0c;我就一边做笔记一边暂停&#xff0c;就这么硬学&#xff0c;数据结构确实是编程中一个十分重要的东西&#xff0c;必须给他拿下昂。…

#每日一题#力扣#2085.统计出现过一次的公共字符串

给你两个字符串数组 words1 和 words2 &#xff0c;请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。 示例 1&#xff1a; 输入&#xff1a;words1 [“leetcode”,“is”,“amazing”,“as”,“is”], words2 [“amazing”,“leetcode”,“is”] 输出&#xff1a;…

HCIP-1

一、网络类型&#xff1a; 点到点 BMA&#xff1a;广播型多路访问 – 在一个MA网络中同时存在广播&#xff08;洪泛&#xff09;机制 NBMA&#xff1a;非广播型多路访问—在一个MA网络中&#xff0c;没有洪泛机制 MA&#xff1a;多路访问 在一个网段内&#xff0c;存在的节…

大模型实战营Day4 XTuner 大模型单卡低成本微调实战

本次讲师是一位从事算法工作的优秀贡献者。 一起来看看吧&#xff01; 本次课程内容主要有&#xff1a; 我将在此整理前三节的内容&#xff0c;第四节放在作业章节进行讲解&#xff1a; 同第三节的建立数据库中所提及到的&#xff0c;如果通用大模型在专用领域表现能力不强&…

MySQL操作手册:高效管理、轻松查询!

MySQL操作手册&#xff1a;高效管理、轻松查询&#xff01; 文章目录 MySQL操作手册&#xff1a;高效管理、轻松查询&#xff01;1、常用SQL命令1.1 数据库操作1.2 表操作1.3 数据操作1.4 索引操作1.5 权限管理1.5.1 创建用户1.5.2 授予权限1.5.3 撤销权限1.5.4 刷新权限 2、常…

普通两样本孟德尔随机化仍能发一区! | 孟德尔随机化周报(1.03-1.09)

欢迎报名2024年孟德尔随机化方法高级班课程&#xff01; 郑老师团队开设的孟德尔随机化高级班2024年1月20-21日开课&#xff0c;欢迎报名 孟德尔随机化,Mendilian Randomization&#xff0c;简写为MR&#xff0c;是一种在流行病学领域应用广泛的一种实验设计方法&#xff0c;利…

【C++ 程序设计入门基础】- 第4节-函数

1、函数 函数是对实现某一功能的代码的模块化封装。 函数的定义&#xff1a; 标准函数&#xff1a; 输入 n 对整数的 a、b &#xff0c;输出它们的和。 #include <iostream> #include <windows.h> using namespace std;int add(int a,int b);//函数原型声明int…