文章目录

  • 题目描述
  • 我的解法
  • 其他思路
  • 总结
  • Github

题目描述

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

  1. 1
  2. 11
  3. 21
  4. 1211
  5. 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();}

总结

  1. 一定要明确自己程序取值的边界(区间开闭),以及循环的次数
  2. 本题目不难,值得一说的是在于审题审半天,一定读明白了再编程

Github

LeetCode刷题笔记

LeetCode-38 报数相关推荐

  1. LeetCode 38. 报数

    1. 题目 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1 11 21 1211 111221 1 被读作 "one 1" ("一 ...

  2. leetcode @38报数-js

    题目 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1 复制代码 11 复制代码 21 复制代码 1211 复制代码 111221 复制代码 1 被读作  &qu ...

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

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

  4. LeetCode 38. Count and Say

    问题链接 LeetCode 38. Count and Say 题目解析 找规律,每一个数字串是上一个数字串的"读法".比如:n=1时为"1",读作" ...

  5. 51 -leetcode 38 -字符串

    // LeetCode 38 字符串 to_string int to string char 直接变为string //边界情况 for int i=0 i<.size() 比较的活 i+1 ...

  6. [勇者闯LeetCode] 38. Count and Say

    [勇者闯LeetCode] 38. Count and Say Description The count-and-say sequence is the sequence of integers b ...

  7. LeetCode 38外观数列39组合总和

    维护公众号:bigsai 回复bigsai分享一些学习资源! 本周上篇 LeetCode 36有效的数独&37解数独(八皇后问题) 外观数列 给定一个正整数 n(1 ≤ n ≤ 30),输出外 ...

  8. LeetCode之报数(简单 模拟 递归)

    报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作  "one 1" ...

  9. 38.报数(C++实现)

    题目 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1 11 21 1211 111221 1 被读作 "one 1" ("一个一& ...

  10. LeetCode: 38. Count and Say

    0509第2题 题目 The count-and-say sequence is the sequence of integers with the first five terms as follo ...

最新文章

  1. Generic Data Access Layer泛型的数据访问层
  2. LeetCode 613. Shortest Distance in a Line --SQL
  3. 图灵奖得主Judea Pearl :从“贝叶斯网络之父”到“AI社区的叛徒”
  4. WinForm窗体间如何传值
  5. C#.net读写XML文件
  6. office插入常见数学公式
  7. c/c++常见面试题
  8. 关于回调函数的那点事
  9. 将 gitblog 的博客内容搬迁到 CSDN
  10. 下图中的蓝月亮为科学家用计算机,2018年高一地理前半期课时练习试卷带答案和解析...
  11. Vue之单文件组件和脚手架
  12. matlab设计激光腔,激光原理课程设计
  13. 【报告分享】2020年中国人工智能商业落地研究报告.pdf(附下载链接)
  14. 部署Lync监控报告
  15. 数字权限管理(DRM)技术
  16. UVA11991 Easy Problem from Rujia Liu?题解
  17. shell php文件是否存在字符串中,shell 判断字符串是否存在数组中的实现示例
  18. Linux fstab配置文件详解
  19. 博文视点读书节第十日丨大咖书单最终章技术分享双倍放送!
  20. spring boot 相关快捷内置类和配置

热门文章

  1. 自己实现JSON、XML的解析 没那么难
  2. 如何设置游戏分辨率(C++)
  3. lua 初接触 --- The first time use Lua for programing
  4. js之数据类型及类型转换
  5. 如何删除JAVA集合中的元素
  6. 第二版全新博客园win phone 客户端
  7. 职场透视:我们都是猪八戒?
  8. 成都东软学院新生周赛(五)
  9. 小程序云开发使用where查询遇到的问题
  10. Nginx下完美解决WordPress的伪静态 (wordpress 迁移后 导致 页面404)