• 问题描述
  1. leetcode38 报数题,facebook 的面试题,leetcode 上的描述写得并不是很通俗易懂,让人读起来云里雾里。看看别人的题目描述:
  2. 意思就是:

    初始值第一行是 1。
    第二行读第一行,读作 1 个 1,去掉个字,写做字符串: “11”。
    第三行读第二行,读作 2 个 1,去掉个字,写做字符串: “21”。
    第四行读第三行,读作 1 个 2,1 个 1,去掉所有个字,写做字符串: “1211”。
    第五行读第四行,读作 1 个 1,1 个 2,2 个 1,去掉所有个字,写作字符串: “ 111221”。
    第六行读第五行,读作 3 个 1,2 个 2,1 个 1,去掉所以个字,写作字符串: “312211”。

    本题目要求输入 1 - 30 的任意行数,输出该行字符串。

  • 解决思路
  1. 题目意思弄清楚后,这道题就很清晰明了了,第n行结果的来源是他前面的字符串,也就是第n-1,那么这就可以用佩波拉契数列的动态规划求解思路去计算了。算是最简单的动态规划了。初始状态为 “1”,依次计算下一个,直到第n个。
  2. 关键是写出根据上一个字符串求解下一个字符串的方法。
  • 代码

     1 public class Solution {
     2     public static String countAndSay(int n) {
     3         /* 将30个结果统统计算出来,也是一种方法,这当前不是动态规划的思想了。
     4         String[] res = new String[30];
     5         res[0] = "1";
     6         for(int i=1; i<n; i++) {
     7             res[i] = findNext(res[i-1]);
     8         }
     9         return res[n-1]; */
    10
    11         String pre = "1";
    12         if (n==1) { return pre; }
    13         String res = "";
    14         for(int i=1; i<n; i++) {
    15             res = findNext(pre);
    16             pre = res;
    17         }
    18         return res;
    19     }
    20
    21     public static String findNext(String pre) {
    22         //String next = "";
    23         StringBuilder next = new StringBuilder();
    24
    25         int length = pre.length();
    26         int i = 0;
    27         while (i<length) {
    28             int count = 1;
    29             while (i+1<length && pre.charAt(i) == pre.charAt(i+1)) {
    30                 count ++;
    31                 i++;
    32             }
    33             next.append(count);
    34             //next += String.valueOf(count);
    35             next.append(pre.charAt(i));
    36             //next += pre.charAt(i);
    37             i++;
    38         }
    39         return next.toString();
    40     }
    41
    42 }

转载于:https://www.cnblogs.com/dogeLife/p/11040270.html

leetcode38 count and say相关推荐

  1. LeetCode38——Count and Say

    LeetCode38--Count and Say 上一题对我来说实在太凶残了,所以我还是缓缓先做38题好了... 题意: 可以理解为求一个数组的第n项,而这个数组的通项公式可以这样理解: 第1项:1 ...

  2. [Swift]LeetCode38. 报数 | Count and Say

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  4. LeetCode刷题记录6——696. Count Binary Substrings(easy)

    LeetCode刷题记录6--696. Count Binary Substrings(easy) 目录 LeetCode刷题记录6--696. Count Binary Substrings(eas ...

  5. c++关于map的find和count的使用

    使用count,返回的是被查找元素的个数.如果有,返回1:否则,返回0.注意,map中不存在相同元素,所以返回值只能是1或0. 使用find,返回的是被查找元素的位置,没有则返回map.end(). ...

  6. 递归/归并:count of smaller numbers求逆序数

    已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数. 例如: nums = [5, 2, 6, 1], count = [2, 1, 1, ...

  7. bzoj 2588 Spoj 10628. Count on a tree (可持久化线段树)

    Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MB Submit: 7669  Solved: 1894 [Sub ...

  8. windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题

    在Windows7下调用vs2013生成的Caffe静态库时经常会提示Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer t ...

  9. 1093 Count PAT‘s

    这题出现在"活用递推"专题下面,所谓递推就是这一步的结果和上一步的结果有直接联系.对于本题来说,从左到右,记到当前位置,一共出现的P的个数,如果当前位置是P,则个数就是上一位的加1 ...

最新文章

  1. 请写出查询该表中成绩最大值的sql语句_SQL-汇总分析
  2. 他是中国投资最厉害的人:投网易一战成名 是巴菲特忠实信徒
  3. maven多个子项目、父项目之间的引用问题
  4. 服务器ip维护无法登录,用DHCP解决服务器硬件管理口没有设置IP无法登录的问题...
  5. 齿轮箱数据集_基于不同工况下辅助数据集的齿轮箱故障诊断
  6. EasyDataTransform for mac (表格数据转换)
  7. Qt 实现多语言 国际化 翻译
  8. 电气、电子电路符号与表示方法
  9. android全面屏像素密度,手机屏幕分辨率、PPI像素密度科普知识大全
  10. CNtV电视直播解析PHP,电视直播
  11. 程序员投入时间和精力实现财富增长之道,这可能会伴随你程序员整个生涯(请不要连续点赞)
  12. Android基础篇-四大组件之使用ContentProvider实现数据共享
  13. “注释”是程序员的自我修养
  14. IMX6Q安卓解开温度墙,设置高性能模式
  15. ionic5中轮播图ion-slides、ion-slide的使用
  16. DANN loss/acc振荡
  17. 奇安信VS启明星辰 欲上市“新人”与上市“老手”的全面对比
  18. plt画网格图_matplotlib子图与多种图形绘制
  19. 独立显卡安装ubuntu
  20. MSCKF(一)——四元数的两种表示

热门文章

  1. MAC电脑删除系统自带的软件
  2. ansj分词器的配置
  3. KVM虚拟化,超详细
  4. 最新注册谷歌账号的有效方法,轻松办公
  5. SpringBoot学习小结之Redis
  6. 数据库备份:Xtrabackup实现完全备份及增量备份
  7. 图片压缩网址和工具---TinyPNG
  8. 统计学中的白噪声理解
  9. 私有云服务器搭建及ssh连接
  10. html站点根目录在哪里,html中的绝对路径URL和相对路径URL及子目录、父目录、根目录...