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
}
複製代碼

相關文章
相關標籤/搜索