Description:
The count-and-say sequence is the sequence of integers with the first five terms as following:
1. 1
2. 11
3. 21
4. 1211
5. 111221
1
is read off as "one 1"
or 11
.
11
is read off as "two 1s"
or 21
.
21
is read off as "one 2
, then one 1"
or 1211
.
Given an integer n, generate the nth term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
Example:
Input: 1
Output: "1"
Example:
Input: 4
Output: "1211"
My code:
/**
* @param {number} n
* @return {string}
*/
var countAndSay = function(n) {
//
if(n == 1) {
return '1';
}
let i = 1, formerStr = '1', curStr = '';
while(i < n) {
let j = 0, num = formerStr[0], count = 0;
curStr = '';
while(formerStr[j] != null) {
if(formerStr[j] == num) {
count++;
j++;
}
if(formerStr[j] != num) { // j++以后继续判断是否符合
curStr += count + num;
count = 0;
num = formerStr[j];
}
}
formerStr = curStr;
i++;
}
return curStr;
};
Note: 一个n的循环,一个a个b
的循环,中间用if(formerStr[j] != num)判断a个是否结束