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.
» Solve this problem[Thoughts]
string-operation. The only trick thing is Line11. seq[seq.size()] always '\0'. It will help to save an "if" statement.
[Code]
1: string countAndSay(int n) {
2: // Start typing your C/C++ solution below
3: // DO NOT write int main() function
4: string seq = "1";
5: int it = 1;
6: while(it<n)
7: {
8: stringstream newSeq;
9: char last = seq[0];
10: int count =0;
11: for(int i =0; i<=
seq.size();i++)
12: {
13: if(seq[i] ==last)
14: {
15: count ++;
16: continue;
17: }
18: else
19: {
20: newSeq<<count<<last;
21: last = seq[i];
22: count =1;
23: }
24: }
25: seq = newSeq.str();
26: it++;
27: }
28: return seq;
29: }