## Sunday, January 27, 2013

### [LeetCode] Count and Say, Solution

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:    }
``````