美文网首页
leetcode_p38_countAndSay——js实现

leetcode_p38_countAndSay——js实现

作者: kayleeWei | 来源:发表于2018-07-20 08:59 被阅读0次
  • 题目:报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
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"

输入: 4
输出: "1211"

  • 解决思路
  1. 需要一个最外层的循环,根据输入n的值确定循环次数,循环中包含一个函数,每次循环计算出的值作为下一次的输入:
    比如输入4时,需要从1开始,调用函数得到的值,作为下一次调用函数的输入参数,循环3次(因此代码里i=1从1开始到第3次结束,而非从0开始)

  2. 每次调用的函数中,输入参数为一个数组,如['1','2','1','1'],使用两个指针记录连续字符串的始末位置(一开始都在同一个起点,如果数组前后两个值相等,就把endIdx向后移动一位)。连续字符的个数为endIdx - startIdx。最后把“读”数的结果放入nextArr,移动startIdx到endInx的位置,进行下一个字符是否连续的判断。

/**
 * @param {number} n
 * @return {string}
 */
var countAndSay = function(n) {
    var a = ['1'];
    for (var i = 1; i < n; i++) {
        a = preStr(a)
    }
    return a.join('')

    function preStr(a) {
        let startIdx = 0
        let endIdx = 0
        let nextArr = []
        while (endIdx < a.length) {
        // for(let i = 0; i < a.length; ++i) {
            while(a[startIdx] === a[endIdx]) {
                endIdx++
            }
            let num = endIdx - startIdx
            nextArr.push(num.toString())
            nextArr.push(a[startIdx])
            startIdx = endIdx
        }
        return nextArr
    }
};

相关文章

  • leetcode_p38_countAndSay——js实现

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

  • 60s倒计时

    JS实现 html js css vue实现 html js css

  • 一份头条前端面试准备[整理稿]

    JS打乱数组 JS ajax JS bind 实现 懒加载 JS实现promise JS发布订阅模式 JSONP ...

  • JS实现插入排序、快排、二分查找法

    用JS实现插入排序 用JS实现快排 用JS实现二分查找法

  • 实现简单的拖动

    拖动div实现 标签(空格分隔): js js 实现 2.jQuery 实现

  • flutter webview 调用js

    目标 实现flutter 调用 js Js 返回结果 项目实现 call_js_page.dart通过webvie...

  • JS-jQuery

    JQ是JS写的插件库,说白了,就是一个js文件,凡是用jq能实现的,js都能实现,js能实现的,jq却不一定能实现...

  • 札记丶20171016

    请假回家了几天,好累。。。 今日整理 1.JS变量 实现效果: 实现步骤: 2.JS实现 实现效果: 实现步骤: ...

  • jQuery基础知识

    jQuery jQuery能实现的效果,js都能实现;js能实现的效果,jQuery未必能实现 jQuery大体分...

  • js与jquery方法对比

    一.文档就绪 jquery实现 简写形式为: js实现 二、元素选择 三、点击事件 jquery实现 js实现 四...

网友评论

      本文标题:leetcode_p38_countAndSay——js实现

      本文链接:https://www.haomeiwen.com/subject/yznxmftx.html