美文网首页
LeetCode38.报数

LeetCode38.报数

作者: LHH大翰仔仔 | 来源:发表于2019-02-18 11:20 被阅读4次

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

    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"

    答案参考:

    /**
     * @param {number} n
     * @return {string}
     */
    var countAndSay = function(n) {
        let ans = "1"
        let i = 1
        while(i < n) {
            ans = say(ans)
            i++
        }
        return ans
    };
    
    function say(s){
        let curChar = s[0]
        let curCount = 1
        let ans = ""
        for (let i = 1; i < s.length; i++){
            if (s[i] == curChar){
                curCount++
            } else {
                ans += curCount + curChar
                curChar = s[i]
                curCount = 1
            }
        }
        ans += curCount + curChar
        return ans
    }
    
    欢迎关注

    相关文章

      网友评论

          本文标题:LeetCode38.报数

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