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: }
No comments:
Post a Comment