LeetCode-38 报数
文章目录
- 题目描述
- 我的解法
- 其他思路
- 总结
- Github
题目描述
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
- 1
- 11
- 21
- 1211
- 111221
1 被读作 “one 1” (“一个一”) , 即 11。
11 被读作 “two 1s” (“两个一”), 即 21。
21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1
输出: “1”
示例 2:
输入: 4
输出: “1211”
我的解法
public String countAndSay(int n) {StringBuilder initString = new StringBuilder("1");//初始化的字符串,注:已经初始化,代表第一步已经完成,之后遍历到n-1即可char[] initStringCharArray = null;int count = 1;for(int i=0; i<n-1; i++){initStringCharArray = initString.toString().toCharArray();StringBuilder resultString = new StringBuilder();//接受改变之后的结果的字符串for(int j=0; j<initStringCharArray.length; j++){//选择分情况讨论的方法if(j<initStringCharArray.length-1 && initStringCharArray[j] == initStringCharArray[j+1]){count++;}else{resultString.append(count).append(initStringCharArray[j]);count = 1;//每次遍历完将count置为初始值}}initString = resultString;}return initString.toString();}
用时:3 ms
击败:93.95%
其他思路
提供一个LeetCode上跑分2ms的,思路差不多,没有让人眼前一亮的感觉,而且调用了其他函数增加了系统栈开销。我本机是跑出了5ms,所以仅供参考。
public String countAndSay1(int n) {String a="1";for (int i = 1; i < n; i++) {a=changString(a);}return a;}private String changString(String a) {char[] chars=a.toCharArray();char cur=' ';StringBuilder builder=new StringBuilder();int num=0;for (int i = 0; i < chars.length; i++) {if(cur==chars[i]){num++;}else {if (num!=0){builder.append(num);builder.append(cur);}num=1;cur=chars[i];}}builder.append(num);builder.append(cur);return builder.toString();}
总结
- 一定要明确自己程序取值的边界(区间开闭),以及循环的次数
- 本题目不难,值得一说的是在于审题审半天,一定读明白了再编程
Github
LeetCode刷题笔记
LeetCode-38 报数相关推荐
- LeetCode 38. 报数
1. 题目 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1 11 21 1211 111221 1 被读作 "one 1" ("一 ...
- leetcode @38报数-js
题目 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1 复制代码 11 复制代码 21 复制代码 1211 复制代码 111221 复制代码 1 被读作 &qu ...
- C#刷遍Leetcode面试题系列连载(2): No.38 - 报数
前言 前文传送门: 上篇文章中我们主要科普了刷 LeetCode 对大家的作用,今天咱们就正式进行 LeetCode 算法题分析.很多人都知道计算机中有种思想叫 递归,相应地也出现了很多算法.解决递归 ...
- LeetCode 38. Count and Say
问题链接 LeetCode 38. Count and Say 题目解析 找规律,每一个数字串是上一个数字串的"读法".比如:n=1时为"1",读作" ...
- 51 -leetcode 38 -字符串
// LeetCode 38 字符串 to_string int to string char 直接变为string //边界情况 for int i=0 i<.size() 比较的活 i+1 ...
- [勇者闯LeetCode] 38. Count and Say
[勇者闯LeetCode] 38. Count and Say Description The count-and-say sequence is the sequence of integers b ...
- LeetCode 38外观数列39组合总和
维护公众号:bigsai 回复bigsai分享一些学习资源! 本周上篇 LeetCode 36有效的数独&37解数独(八皇后问题) 外观数列 给定一个正整数 n(1 ≤ n ≤ 30),输出外 ...
- LeetCode之报数(简单 模拟 递归)
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "one 1" ...
- 38.报数(C++实现)
题目 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1 11 21 1211 111221 1 被读作 "one 1" ("一个一& ...
- LeetCode: 38. Count and Say
0509第2题 题目 The count-and-say sequence is the sequence of integers with the first five terms as follo ...
最新文章
- Generic Data Access Layer泛型的数据访问层
- LeetCode 613. Shortest Distance in a Line --SQL
- 图灵奖得主Judea Pearl :从“贝叶斯网络之父”到“AI社区的叛徒”
- WinForm窗体间如何传值
- C#.net读写XML文件
- office插入常见数学公式
- c/c++常见面试题
- 关于回调函数的那点事
- 将 gitblog 的博客内容搬迁到 CSDN
- 下图中的蓝月亮为科学家用计算机,2018年高一地理前半期课时练习试卷带答案和解析...
- Vue之单文件组件和脚手架
- matlab设计激光腔,激光原理课程设计
- 【报告分享】2020年中国人工智能商业落地研究报告.pdf(附下载链接)
- 部署Lync监控报告
- 数字权限管理(DRM)技术
- UVA11991 Easy Problem from Rujia Liu?题解
- shell php文件是否存在字符串中,shell 判断字符串是否存在数组中的实现示例
- Linux fstab配置文件详解
- 博文视点读书节第十日丨大咖书单最终章技术分享双倍放送!
- spring boot 相关快捷内置类和配置