leetcode-第38题-外观数列

LeetCode 第38题:外观数列 题目要求我们给定一个正整数n,生成并返回第n项的外观数列。外观数列是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。1被读作 “one 1” 即11。11被读作 “two 1s” 即21。21被读作 “one 2, then one 1” 即1211。111211211111221通过这个数数游戏,我们学会了如何生成外观数列。利用迭代的方法,我们能够高效地逐步生成每一项数列。记住,在处理这种问题时,关键是要理解迭代生成的核心思想,并在每一步中仔细统计字符的连续出现次数。 阅读详情

 博主并没有什么算法基础,所以写的不好,勿喷,抛砖引玉,欢迎交流,感谢。 

//给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 
// 注意:整数序列中的每一项将表示为一个字符串。
// 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:
//1.     1
//2.     11
//3.     21
//4.     1211
//5.     111221
//6.     312211
//7.     13112221
//8.     1113213211
//9.     31131211131221
// 第一项是数字 1
// 描述前一项,这个数是 1 即 “一个 1 ”,记作 11
// 描述前一项,这个数是 11 即 “两个 1 ” ,记作 21
// 描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记作 1211
// 描述前一项,这个数是 1211 即 “一个 1 一个 2 两个 1 ” ,记作 111221
// 示例 1:
// 输入: 1
//输出: "1"
//解释:这是一个基本样例。 
// 示例 2:
// 输入: 4
//输出: "1211"
//解释:当 n = 3 时,序列是 "21",其中我们有 "2" 和 "1" 两组,"2" 可以读作 "12",也就是出现频次 = 1 而 值 = 2;类似 
//"1" 可以读作 "11"。所以答案是 "12" 和 "11" 组合在一起,也就是 "1211"。 
// Related Topics 字符串 
// 👍 543 👎 0


package com.zqh.leetcode.editor.cn;

//Java:外观数列
public class P38CountAndSay {
    public static void main(String[] args) {
        Solution solution = new P38CountAndSay().new Solution();
        System.out.println(solution.countAndSay(8));
        // TO TEST
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public String countAndSay(int n) {
            if (1 == n) {
                return "1";
            }
            String init = "1";
            return desc(init, 1, n - 1);
        }
        public String desc(String init, int begin, int n) {
            char[] chars = init.toCharArray();
            StringBuilder stringBuilder = new StringBuilder();
            int count = 1;
            for (int i = 0; i < chars.length; i++) {
                if (i + 1 != chars.length && chars[i] == chars[i + 1]) {
                    if (i + 1 == chars.length - 1) {
                        //最后一个元素
                        stringBuilder.append(++count).append(chars[i]);
                        break;
                    }
                    // 数量累加
                    ++count;
                    continue;
                }
                // 记录最大累计数以及对应的数字
                stringBuilder.append(count).append(chars[i]);
                // 重置为1
                count = 1;
            }
            if (begin < n) {
                return desc(stringBuilder.toString(), ++begin, n);
            }
            return stringBuilder.toString();
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}

 

计量经济学——事件研究法/事件分析法 阅读详情

相关推荐

CTF命令执行绕过实战:从空格过滤到无回显外带的7种核心姿势

命令执行漏洞是Web安全中的常见高危漏洞,其核心原理在于应用程序未对用户输入进行充分过滤,导致攻击者能够注入并执行系统命令。在真实环境中,安全防护措施(如WAF、输入过滤函数)普遍存在,因此漏洞利用的关键技术在于“绕过”这些过滤机制。理解过滤器的运作逻辑(如黑名单、白名单、转义、长度限制)是成功绕过的前提。通过系统学习**空格绕过**、**命令黑名单绕过**、**编码混淆**等基础技巧,并结合**无回显外带**、**反弹Shell**等高级利用链,安全研究人员能够有效应对复杂防护场景。本文以CTFshow

weixin_29315091的博客 368

38. 外观数列

class Solution { public: string countAndSay(int n) { if(n==1){ return "1"; } string str=countAndSay(n-1);//递归把之前的那个数组搞出来 //之后用计数器,相等就加加然后改字符串!!!有了之前的字符串应该好做了吧 string res=""; int count=1; .

vicenfan的博客 203

解决Linux下Questasim中代码字体非常小

Questasim的source窗口里代码字体非常小 你是不是也遇到这样的问题,在使用Vmware时,Questasim的代码字体非常小,小到完全看不见,连断点都没办法标记。 下面我给出我摸索好久的解决办法,分享给大家。 1.首先,版本是Questasim 10.7c,在Vmware16中打开,情况如下: 不多逼逼,直接上图开搞: 给textFontV2设置值:monospace 12 normal roman 这里一定要注意啦,点完apply之后,不要点ok,直接关闭窗口。 ...

SummerXRT的博客 7810

[Leetcode]外观数列-Python+递归

[Leetcode]外观数列 Leetcode-外观数列 题目描述 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 第一项是数字 1 描述前一项,这个数是 1 即 “一个 1 ”,记作 11 描述前一项,这个数是 11 即 “两个 1

何猫七的博客 311

一文读懂 CST 时/频域求解器

本文系统介绍了CST Studio Suite中的关键网格技术——六面体网格、四面体网格以及TLM求解器专用的八叉树非均匀网格技术。重点阐述了六面体网格的三项核心技术:理想边界拟合(PBA)技术可精确处理曲面边界,薄片技术(TST)能高效模拟薄层结构,自适应八叉树网格实现计算资源最优分配。同时详细对比了六面体网格与四面体网格的特点及适用场景,前者适用于系统级EMC/EMI分析等时域问题,后者擅长处理复杂曲面和异质材料的频域问题。

一只豌豆象的博客 461

Winform从入门到精通(7)——ComboBox(史上最全)

本文介绍ComboBox控件的详细用法,包括所有属性、事件,绝对史上最全!

qq_34059233的博客 2万+

力扣刷题之38. 外观数列

题目简述 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = “1” countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11”

mr_fangf的博客 274

1篇1章4节:生成对抗网络GAN和图像生成领域的StyleGAN

AI图像生成技术的革命性突破:从GAN到StyleGAN 近年来,人工智能在图像生成领域取得显著进展,尤其是生成对抗网络(GAN)的发展推动了技术的飞跃。从早期的基础GAN到渐进式GAN(Progressive GAN),再到革命性的StyleGAN,AI生成图像的逼真度已接近人类创作水平。StyleGAN通过引入风格潜向量和自适应实例归一化,实现了对图像风格与内容的精细控制,广泛应用于人脸生成、艺术创作及影视行业。后续的StyleGAN2解决了“斑点”问题,StyleGAN3进一步优化纹理过渡,提升了图像

MD Code 213

【每日一题-leetcode】38. 外观数列

38. 外观数列 外观数列 难度简单519 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 // 1 > 1 // 2 > 11 // 3 > 21 // 4 > 1211 public St

芝兰生于深谷,不以无人而不芳 604

Google Earth Engine 红树林制图方法的代码(三个模块)

谷歌地球引擎红树林制图方法(GEM)提供了一种直观、易用且可复制的工具,适用于广泛的非专业沿海管理者和决策者。该工具全面回顾并整合了相关的红树林遥感文献,并利用云计算的力量,包括简化的基于图像的潮汐校准方法。GEM 可免费用于非营利用途,并在 GEE 中运行,包含全面且详细注释的代码。GEM 专门设计用于绘制全球范围内多日期红树林分布并量化其动态变化。目前可用的工具和方法未能充分利用沿海管理者通常持有的丰富地方专业知识——GEM 致力于填补这一空白,帮助结合地方专业知识与 GEE 的云计算能力。

此星光明博客 559

【2024年5月备考新增】《2024高项论文精华版(5)项目工作绩效域和度量绩效域》

3、专注于工作过程和能力。③专注于工作过程和能力。1、制定有效的度量指标。2、度量内容及相应指标。3、展示度量信息和结果。4、管理沟通和参与。7、监督新工作和变更。①制定有效的度量指标。②度量内容及相应指标。③展示度量信息和结果。5、基于度量进行诊断。

Else 的博客 1265

LeetCode刷题(19)~外观数列

题目描述 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数是 1 即 “一个 1 ”,记作 11 描述前一项,这个数是 11 即 “两个 1 ” ,记作 21 描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记作 1211 描

海到无边天作岸 山登绝顶我为峰 1791

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode第38题_外观数列

给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。

qq_40263592的博客 1177

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

力扣第38题:外观数列(C语言解法)

"1"具体描述方式如下:对上一个字符串,从左到右遍历其中连续的相同字符,并将其数量和字符本身连接形成新的字符串。1"一1"11"二1"21"一2一1"1211"一1一2二1"111221。

weixin_48941116的博客 690

LeetCode高频题38. 外观数列

1)定义递归函数f(n),返回n时刻生成的描述字符串,它描述的是n-1那个字符串的情况,n-1要去找n-2……直到f找1返回“1”; 递归回来处理 2)每次都要从i开始统计i字符连续相同的有多少个?然后记住j下次i从j才开始找,反正统计count个i字符,把count和i放入结果拼接起来 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。...

weixin_46838716的博客 499

Leetcode 第38题--外观数列 C语言

外观数列:题目给出了关键的提示:要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。

m0_52561619的博客 289

LeetCode38题 外观数列 C语言

LeetCode38题 外观数列 C语言 外观数列 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = “1” countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数

weixin_45356258的博客 891

0042力扣38题---外观数列

力扣38题---外观数列 :方法一:遍历生成,方法二:递归实现

java工作室 197

LeetCode38题: 外观数列

LeetCode38题: 外观数列目录题目描述解题思路最终代码 目录 题目描述 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1. 1 2. 11

wegofun的博客 258

LeetCode 刷题【38. 外观数列】

外观数列问题。解法1采用递归方式,通过分解问题为更小的子问题,逐层构建结果字符串。解法2改用for循环迭代,通过外层循环控制迭代次数,内层循环统计连续数字出现次数并构建新字符串

gzkhxohc的博客 272

LeetCode-外观数列【小名带你解读LeetCode第38题-外观数列 的题目!最清晰的题解】

一道读题读到懵的题目,通过这题,我发现,我不止是算法差,语文更差!嗯!很多题不是不会!而是我没有读懂题!没错!就是这个原因!???? 题目: 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1.     1 2.     11 3.&nb...

小名同学 21万+

解题思路-LeetCode第38题:外观数列

解题思路-LeetCode第38题:外观数列 题目描述: 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数是 1 即 “一个 1 ”,记作 11 描述前一项,这个数是 11 即 “两个 1 ” ,记作 21 描述前一项,这个数是 21 即

weixin_48153141的博客 267

Java | Leetcode Java题解之第38题外观数列

Java | Leetcode Java题解之第38题外观数列

m0_57195758的博客 626

C练题笔记之:Leetcode-38. 外观数列

Leetcode-38. 外观数列 练题笔记

lingjinyue的博客 172

外观数列-力扣LeetCode 38题C++版

方法一:递归 : 双指针维护相同数字的左右边界 c++版

weixin_58045467的博客 241

LeetCode刷题笔记第38题:外观数列

LeetCode刷题笔记第38题:外观数列 想法: 因为后一项是前一项的描述,通过对前一项的循环遍历和判断来生成当前项。 class Solution: def countAndSay(self, n: int) -> str: # 外观数列 # 用pre表示前一个字符串 pre = "" # 用cur表示当前字符串 cur = "1" # 通过字符串的最大长度n来做循环 for _

qq_29787929的博客 207
上一篇: leetcode-第12题-整数转罗马数字
下一篇: leetcode-第14题-最长公共前缀
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值