1. 程式人生 > >[LeetCode] Count and Say 數數並說

[LeetCode] Count and Say 數數並說

數數並說序列是一個整數序列,第二項起每一項的值為對前一項的計數,其前五項如下:

  1. 1
  2. 11
  3. 21
  4. 1211
  5. 111221
    1 被讀作 “一個一” 即 11。
    11 被讀作 “兩個一” 即 21。
    21 被讀作 “一個二 和 一個一” 即 1211。
    給一個正整數 n ,輸出數數並說序列的第 n 項。
    注意:該整數序列的每項都輸出為字串。

例 1:

輸入: 1
輸出: "1"

例 2:

輸入: 4
輸出: "1211"

思路:對於前一個數,找出相同元素的個數,把個數和該元素存到新的string裡。

/**
 * @param {number} n
 * @return
{string} */
var countAndSay = function(n) { if (n <= 0) return ""; let res = "1"; while (--n) { let cur = ""; for (let i = 0; i < res.length; ++i) { let cnt = 1; while (i + 1 < res.length && res[i] == res[i + 1]) { ++cnt; ++i; } cur += cnt.toString() + res[i]; } res = cur; } return
res; };