LeetCode算法题解 38-报数
题目描述
题解:
这道题目的其实是很简单的(难度的分类也是简单),但是乍一看并不是那么好做,首先看懂题目意思:
比如1211,怎么报数呢?从左到右开始报数:1个1、1个2、2个1 => 111221
第一种解法:
n最大为30,那我就一个个地数出来,不过这方法太耗时间了,而且容易出错。
第二种解法:
- 写一个
getCountResultBySqe(string str)
,传入一个字符串,比如1211
,得到报数的结果为111221
。- 写一个递归(循环也可以),当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-报数相关推荐
- 算法:经典leetcode算法题解
索引 1. https://leetcode.com/problems/patching-array/ 补丁数组 2. https://leetcode.com/problems/find-the- ...
- 34.在排序数组中查找元素的第一个和最后一个位置--leetcode算法题解(带注释)
public int[] searchRange(int[] nums, int target) {//先决条件排除一部分if(target < nums[0] || target > n ...
- leetcode算法题解(Java版)-16-动态规划(单词包含问题)
摘要: 碰到二叉树的问题,差不多就是深搜.广搜,递归那方面想想了,当然如果要考虑一下空间.时间,还需要进行剪枝和压缩处理.这题比较简单:判断两个树是否相等,可以递归的判断子树是否相等,最后找到边界条件 ...
- LeetCode算法题解 414-第三大的数
题目描述 题解: 这道题如果不看时间复杂度那是挺容易的,一个排序就解决了,但是限制到O(n)还是要点方法才能解出来的: 方法1: 如果元素的个数<=2,直接返回最大的值即可. 如果元素的个数&g ...
- leetcode算法题解(Java版)-11-贪心大法
一.全排列变式(递归) 题目描述 Given a collection of numbers that might contain duplicates, return all possible un ...
- leetcode算法题解(Java版)-9-N皇后问题
一.贪心 题目描述 Find the contiguous subarray within an array (containing at least one number) which has th ...
- java链表变成字符串,leetcode算法题解(Java版)-6-链表,字符串
一.字符串处理 题目描述 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the r ...
- LeetCode算法题解与思路汇总
1.两数之和 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个 ...
- C#刷遍Leetcode面试题系列连载(2): No.38 - 报数
前言 前文传送门: 上篇文章中我们主要科普了刷 LeetCode 对大家的作用,今天咱们就正式进行 LeetCode 算法题分析.很多人都知道计算机中有种思想叫 递归,相应地也出现了很多算法.解决递归 ...
最新文章
- SpringJDBC的简单应用
- 2010年7月blog汇总:OpenTest、MetaModelEngine和敏捷个人
- 为什么我们总认为开源不挣钱?
- ARP协议全面实战手册——Wireshark的安装第一更
- python利器怎么编程-python等自动化脚本编程利器 Script.NET
- 在CentOS上用yum安装redis
- 加载Hadoop+spark镜像文件需要修改的配置文件
- MacOS上的包管理工具
- android设置title_所见即所得的 Android 自动化神器,用 Automate 一键收藏文章
- iNeuOS工业互联平台,发布消息管理、子用户权限管理、元件移动事件、联动控制、油表饼状图和建筑类设备驱动,v3.4版本...
- FFMPEG中H.264的算法文档--整理自ffmpeg论坛等
- 读《程序是怎样跑起来的》第三章有感
- Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
- 2008评估过期 server sql_SQLServer2008R2数据库评估版已经过期解决办法.doc
- 已解决:如何使用IDEA生成java帮助文档java doc?
- shping cloud搭建大觅网-之sping cloud初体验
- ITIL学习笔记——核心流程之:服务台
- shell脚本之俄罗斯方块
- #gStore-weekly | Centos7系统下gStore在 docker上的安装部署
- 求二叉树中的第一条最长路径长度,并输出最长路径上的节点