38. 报数(JavaScript版)

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

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 ,输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: "1"

示例 2:

输入: 4
输出: "1211"

思路:

首先这个题目读了好几遍。要得到第n项,把第n-1项读出来就可以了,所以是一个循环,每一次循环计算出一项。

在循环内部,我们需要把当前这一项郎读出来,得到的结果作为下一循环的开始;设置一个计数器count;一个指针 j 从1开始,第 j 个数和第 j - 1 个数相等,count++, 不相等,就可以朗读这个第 j - 1 个数。

JavaScript 版本:

/**
 * @param {number} n
 * @return {string}
 */
var countAndSay = function(n) {
  if ( n === 1 ) {
    return '1';
  }
  var intstr = '11';
  var count = 1;
  var s_temp = '';
  for ( var i = 2; i < n; i ++ ) {
    for ( var j = 1; j < intstr.length; j ++ ) {
      if (intstr[j] === intstr[j - 1]) {
        count ++;
      } else {
        s_temp = s_temp + count + intstr[j - 1];
        count = 1;
      }
      if (j === intstr.length - 1) {
        s_temp = s_temp + count + intstr[j];
      }
    }
    count = 1;
    intstr = s_temp;
    s_temp = ''; 
  }
  return intstr;
}

 

全部评论

相关推荐

头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务