题目:
难度:Easy
相关话题:字符串
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1. 1
2. 11
3. 21
4. 1211
5. 111221
1
被读作 "one 1"
( "一个一"
) , 即 11
。 11
被读作 "two 1s"
( "两个一"
), 即 21
。 21
被读作 "one 2"
, “ one 1"
( "一个二"
, "一个一"
), 即 1211
。
给定一个正整数 n (1 ≤n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例1:
示例 2:
思路:
按照题意从i===2
开始,读出s
,并且更新s
,直到i>n
。
这里的读
,就是对连续数字一个合并,例如11112
,前面有4
个1
连续,因此读为41
,后面1
个2
,读为12
,连在一起就是4112
。
/**
* @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
* @param {number} n
* @return {string}
*/
var countAndSay = function(n) {
let s='1'
for(let i=2;i<=n;i++){
let cur=s[0],count=1,news=''
for(let j=1;j<s.length;j++){
if(s[j]===s[j-1]){
count++
}else{
news+=count+''+cur
cur=s[j]
count=1
}
}
s=news+count+cur
}
return s
};
扩展阅读: