题目描述

题解:

这道题目的其实是很简单的(难度的分类也是简单),但是乍一看并不是那么好做,首先看懂题目意思
比如1211,怎么报数呢?从左到右开始报数:1个1、1个2、2个1 => 111221
第一种解法
n最大为30,那我就一个个地数出来,不过这方法太耗时间了,而且容易出错。
第二种解法

  1. 写一个getCountResultBySqe(string str),传入一个字符串,比如1211,得到报数的结果为111221
  2. 写一个递归(循环也可以),当n==1时,直接返回1,否则返回getCountResultBySqe(countAndSay(n - 1)),其实也就是自顶向下求出对应的报数结果。

代码(递归):

class Solution {
public:string countAndSay(int n) {// 比如:1211,就是1个1、1个2、2个1 => 111221// 1:1// 2:11// 3:21// 4:1211// 5:111221// 6:312211// 7:13112211// 8:1113212221if(n == 1){return "1";}return getCountResultBySqe(countAndSay(n - 1));}  string getCountResultBySqe(string str){// 给定一个序列得到报数的结果string res = "";int i = 1;int cnt = 1;char pre = str[0];while(i < (int)str.size()){if(str[i] == pre){cnt++;}else{char cnt_ch = '0' + cnt;res += cnt_ch;res += pre;cnt = 1;pre = str[i];}i++;}char cnt_ch = '0' + cnt;res += cnt_ch;res += pre;return res;}};

代码(循环)

class Solution {
public:string countAndSay(int n) {string str = "1";for(int i = 1; i <= n-1; i++){str = getCountResultBySqe(str);}return str;}  string getCountResultBySqe(string str){// 给定一个序列得到报数的结果string res = "";int i = 1;int cnt = 1;char pre = str[0];while(i < (int)str.size()){if(str[i] == pre){cnt++;}else{char cnt_ch = '0' + cnt;res += cnt_ch;res += pre;cnt = 1;pre = str[i];}i++;}char cnt_ch = '0' + cnt;res += cnt_ch;res += pre;return res;}
};

LeetCode算法题解 38-报数相关推荐

  1. 算法:经典leetcode算法题解

    索引 1. https://leetcode.com/problems/patching-array/  补丁数组 2. https://leetcode.com/problems/find-the- ...

  2. 34.在排序数组中查找元素的第一个和最后一个位置--leetcode算法题解(带注释)

    public int[] searchRange(int[] nums, int target) {//先决条件排除一部分if(target < nums[0] || target > n ...

  3. leetcode算法题解(Java版)-16-动态规划(单词包含问题)

    摘要: 碰到二叉树的问题,差不多就是深搜.广搜,递归那方面想想了,当然如果要考虑一下空间.时间,还需要进行剪枝和压缩处理.这题比较简单:判断两个树是否相等,可以递归的判断子树是否相等,最后找到边界条件 ...

  4. LeetCode算法题解 414-第三大的数

    题目描述 题解: 这道题如果不看时间复杂度那是挺容易的,一个排序就解决了,但是限制到O(n)还是要点方法才能解出来的: 方法1: 如果元素的个数<=2,直接返回最大的值即可. 如果元素的个数&g ...

  5. leetcode算法题解(Java版)-11-贪心大法

    一.全排列变式(递归) 题目描述 Given a collection of numbers that might contain duplicates, return all possible un ...

  6. leetcode算法题解(Java版)-9-N皇后问题

    一.贪心 题目描述 Find the contiguous subarray within an array (containing at least one number) which has th ...

  7. java链表变成字符串,leetcode算法题解(Java版)-6-链表,字符串

    一.字符串处理 题目描述 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the r ...

  8. LeetCode算法题解与思路汇总

    1.两数之和 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个 ...

  9. C#刷遍Leetcode面试题系列连载(2): No.38 - 报数

    前言 前文传送门: 上篇文章中我们主要科普了刷 LeetCode 对大家的作用,今天咱们就正式进行 LeetCode 算法题分析.很多人都知道计算机中有种思想叫 递归,相应地也出现了很多算法.解决递归 ...

最新文章

  1. SpringJDBC的简单应用
  2. 2010年7月blog汇总:OpenTest、MetaModelEngine和敏捷个人
  3. 为什么我们总认为开源不挣钱?
  4. ARP协议全面实战手册——Wireshark的安装第一更
  5. python利器怎么编程-python等自动化脚本编程利器 Script.NET
  6. 在CentOS上用yum安装redis
  7. 加载Hadoop+spark镜像文件需要修改的配置文件
  8. MacOS上的包管理工具
  9. android设置title_所见即所得的 Android 自动化神器,用 Automate 一键收藏文章
  10. iNeuOS工业互联平台,发布消息管理、子用户权限管理、元件移动事件、联动控制、油表饼状图和建筑类设备驱动,v3.4版本...
  11. FFMPEG中H.264的算法文档--整理自ffmpeg论坛等
  12. 读《程序是怎样跑起来的》第三章有感
  13. Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
  14. 2008评估过期 server sql_SQLServer2008R2数据库评估版已经过期解决办法.doc
  15. 已解决:如何使用IDEA生成java帮助文档java doc?
  16. shping cloud搭建大觅网-之sping cloud初体验
  17. ITIL学习笔记——核心流程之:服务台
  18. shell脚本之俄罗斯方块
  19. #gStore-weekly | Centos7系统下gStore在 docker上的安装部署
  20. 求二叉树中的第一条最长路径长度,并输出最长路径上的节点

热门文章

  1. hexo categories和tags页面不显示解决办法
  2. linux cadaver 命令,对于linux中线程id的讨论
  3. 进入BeOS的花花世界 系列三
  4. 联想小新使用Alt+insert快捷键
  5. S32K144 CAN收发调试经验总结
  6. Linux迁移home目录到根目录的操作步骤
  7. Nginx项目部署笔记
  8. 删除容器docker rm和强制删除容器docker rm -f
  9. 怎么用计算机按反三角函数的导数,反三角函数求导过程
  10. 什么是Java集合?