38. 报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
- 1
- 11
- 21
- 1211
- 111221
1 被读作 "one 1" ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1211。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1
输出: "1"示例 2:
输入: 4
输出: "1211"
题解
记录与当前项相同的数字出现的次数 num
,当后一位与当前项不相等时,组合当前项出现次数与当前项数值并存储 num+res[j]
,初始化 num
/**
* @param {number} n
* @return {string}
*/
var countAndSay = function(n) {
let res=1+'',i=1
while(i<n){
let j=0,temp='',num=1
while (j<res.length){
if(res[j]!=res[j+1]){
temp+=num+res[j]+''
num=1
}else{
num++
}
j++
}
res=temp
i++
}
return res
};