点击蓝色“五分钟学算法”关注我哟

加个“星标”,一起学算法

今天分享一道很 rap 的算法题目。

题目来源于 LeetCode 上第 38 号问题:报数。题目难度为 Easy,目前通过率为 50.7% 。

题目描述

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1. 12. 113. 214. 12115. 1112212. 113. 214. 12115. 111221

1 被读作  "one 1"  ("一个一") , 即 1111 被读作 "two 1s" ("两个一"), 即 2121 被读作  "one 2""one 1"("一个二" , "一个一") ,即 1211

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1输出: "1"输出: "1"

示例 2:

输入: 4输出: "1211"输出: "1211"

题目解析

这道题目的难点在于题目的理解。

我看了一下 LeetCode 的评论区,绝大部分人都是在吐槽没看懂题目。题目的确比较绕,读了几篇才看明白。

题目讲的是后续的相应的 输出数字 依据的是它之前的 输出数字

看懂了 题意,借助 递归 的概念,这道题的基本上就很好求解了。

动画描述

以报数字 6 为例。

代码实现

// c++class Solution {public: string countAndSay(int n) {        //递归终止的条件        if(n == 1) return "1";        string prevResult = countAndSay(n-1);        int count = 1;//计数        string nowResult;//存放结果        for(int i = 0 ; i < prevResult.length();i++){            //统计有多少个相同数字            if(prevResult[i] == prevResult[i+1]){                count++;                continue;            }else{                if( prevResult[i] != prevResult[i + 1]) {                    nowResult += to_string(count) + prevResult[i];                    //重置开始统计其他的数字                    count = 1;                }            }        }       return nowResult;    }};class Solution {public: string countAndSay(int n) {        //递归终止的条件        if(n == 1) return "1";        string prevResult = countAndSay(n-1);        int count = 1;//计数        string nowResult;//存放结果        for(int i = 0 ; i < prevResult.length();i++){            //统计有多少个相同数字            if(prevResult[i] == prevResult[i+1]){                count++;                continue;            }else{                if( prevResult[i] != prevResult[i + 1]) {                    nowResult += to_string(count) + prevResult[i];                    //重置开始统计其他的数字                    count = 1;                }            }        }       return nowResult;    }};

END

 原 创 热 文 推 荐 

☞毕业十年后,我忍不住出了一份程序员的高考试卷

☞一道腾讯面试题:厉害了我的杯

☞十大经典排序算法动画与解析,看我就够了

☞这或许是东半球分析十大排序算法最好的一篇文章

☞面试官,我会写二分查找法!对,没有 bug 的那种!

你点的每个“在看”,我都认真当成了喜欢

大家好,我是练习时长两年半的LeetCode爱好者,喜欢唱跳rap相关推荐

  1. 大家好!我是练习时长两天半的像素画练习生,喜欢唱,跳,rap...

    此风水宝地是本0美术基础钢铁程序员的像素画练习之处,如非练就火眼金睛者速速alt+f4. 当然,若有专业美术人士愿意指正,请疯狂批评! 1.男教师. 后期点评:图1没画阴影,特别是脖子没阴影和脸连起来 ...

  2. 时长两年半,WPS打开文档的速度慢竟被我成功解决了

    你有没有经常因为WPS打开文档的速度慢,并且卡,有时让你卡到怀疑人生,其实,有一招,可以快速解决文档打开速度的慢. 网上搜了很多种办法,但都无法解决,但是有一天,我突然有个大胆的想法,进过了历时两年半 ...

  3. 【spring】集成Web、druid、jdbcTemple实现免登录时长两天半

    CSDN话题挑战赛第2期 参赛话题:学习笔记 *学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程.这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路.学习之乐,独乐乐,不如众 ...

  4. 练习时长两年半,二本学历,没背景,会唱跳篮球,美团四面成功拿下offer

    个人背景 又逢"金九银十",年轻的毕业生们满怀希望与忐忑,去寻找.竞争一个工作机会.已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇.更大的平台. 然而,面试人群 ...

  5. 时长一年半的前端练习生2022年终总结

    2022感觉过得真快,还有一周就结束了,趁着周末有时间来总结一下2022做了什么.最近小

  6. python提取时长2s以内的单词音频的韵母基频,以及单词词长信息

    python提取时长2s以内的单词音频的韵母基频,以及单词词长信息 提取信息自动存入当前工作空间中的excel文件,包括文件名.前字时长.后字时长.两字总时长.前字韵母基频.后字韵母基频.(10个点, ...

  7. 活动时长计算尝试用Lambada 实现责任链的代码优化

    文章目录 活动时长计算尝试用Lambada 实现责任链的代码优化 原流程 原代码 主控流程 计算标准费率时长子过程 电访和面访活动计算标准费率时长 路演活动计算标准费率时长 问卷活动计算标准费率时长 ...

  8. 计算两个时间之间的工作时长

    计算两个时间之间的工作时长(小时)排除周末 package com.test;import org.apache.commons.lang3.time.DateUtils;import java.ma ...

  9. 捕获用户在该页面停留的时长,我是这样做的(前端监测)

    前言 为什么要做这个监测用户停留的呢?原因很简单,如果我们要分析这个页面对我们的产品有没有价格,那么用户浏览的时长是一个很关键的点,如果每个用户平均每天在这个页面停留两个小时以上,那么我们会觉得这个页 ...

  10. Java多线程模拟驾校学车——假设共有30个学员,其中20个普通学员,10个VIP学员,两类学员并行叫号练车 ,叫号要求:vip学员被叫号的概率要高,vip学习时长是普通学员的3倍数···

    假设共有30个学员,其中20个普通学员,10个VIP学员,两类学员并行叫号练车 叫号要求:vip学员被叫号的概率要高,vip学习时长是普通学员的3倍数,vip学员要在普通学员之前结束练车 packag ...

最新文章

  1. Python中如何使用构造方法定义类
  2. spring security自定义指南
  3. ActiveMQ入门教程(三) - ActiveMQ P2P版的HelloWorld
  4. mysql binlog过期策略_对存在过期 binlog 的 MySQL5.7 添加从服务器
  5. 第三次scrum冲刺
  6. C# winform使用InstallShield2019打包
  7. 2022-07-08 Unity Json2——LitJson
  8. 摩西十诫 摩西简介 世界宗教图谱
  9. STM32F103C8T6+LD3320语音识别模块智能灯控
  10. oracle nested loops outer,11g对Nested Loops的改进
  11. android定时开关机源码,定时关机程序及源码(易语言)-带设置自动启动功能
  12. 内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别
  13. 计算机故障维修四种思路,维修“望闻问切” 电脑故障的排除方法
  14. 什么是预测区间和置信区间
  15. 19年的桌面KDE的风雨和陪伴,没有什么能够割舍
  16. web服务器端预约系统,Web场馆预约管理系统
  17. python字典函数大全_python字典介绍
  18. 诺禾- tcp 网络效劳框架
  19. java/php/net/python宅急送管理系统设计
  20. 100集华为HCIE安全培训视频教材整理 | IPSec VdPdN高可靠性案例及配置(三)

热门文章

  1. 机器学习二:K均值聚类算法(k-means clustering algorithm)
  2. 实用插件(七)视频播放插件——ckplayer
  3. 关于指针总结(指针种类,概念,作用与用途)
  4. 景嘉微变更会计师事务所引发投资者担忧
  5. 2018年腾讯校招产品群面体会
  6. 文件夹自定义重命名的步骤
  7. 游戏策划:为什么我的儿子不沉迷游戏
  8. 武汉理工计算机保研去华科,武汉理工大学2021届保研率14.9%,主要保研本校、武大、华科...
  9. matlab中的矩阵求和
  10. Mac怎么方便看节假日安排,添加中国法定节假日安排