LeetCode38.报数

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

  1. 1
  2. 11
  3. 21
  4. 1211
  5. 111221

1被读做 "one 1" ("一个一") , 即 1111 被读做 "two 1s" ("两个一"), 即 2121 被读做 "one 2", "one 1" ("一个二" , "一个一") , 即1211java

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n项。spa

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

示例 1:cdn

输入: 1 输出: "1"ip

示例 2:字符串

输入: 4 输出: "1211"string

答案参考:it

/** * @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
}
复制代码

相关文章
相关标签/搜索