報數序列是一個整數序列,按照其中的整數的順序進行報數,獲得下一個數。其前五項以下:javascript
1
被讀做 "one 1"
("一個一") , 即 11
。 11
被讀做 "two 1s"
("兩個一"), 即 21
。 21
被讀做 "one 2"
, "one 1"
("一個二" , "一個一") , 即1211
。java
給定一個正整數 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
}
複製代碼