报数序列是一个整数序列,按照其中的整数的顺序进行报数,获得下一个数。其前五项以下: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
}
复制代码