-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathE_CountAndSay.js
More file actions
53 lines (43 loc) · 1.11 KB
/
Copy pathE_CountAndSay.js
File metadata and controls
53 lines (43 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
* The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 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 sequence.
Note: The sequence of integers will be represented as a string.
*
* */
//ac 153ms
function countAndSay(n){
var seq = "", temp = "1";
for(var i = 1; i<= n; i++){
seq = temp;
temp = buildSeq(temp);
console.log("seq: " + seq);
}
return seq;
}
function buildSeq(seq){
var result = "";
var len = seq.length, p = 1, count = 1;
var temp = seq.charAt(0);
while(p < len){
while(p < len && seq.charAt(p) == temp){
p++; count++;
}
//stop count
result = result+ count + temp;
if(p < len){
temp = seq.charAt(p);//find the next count
count = 1;
p++;
}
}
//for the situation of last one with one 11221
if(count == 1){
result = result+ count + temp;
}
return result;
}
console.log(countAndSay(6));