Count and Say (Easy)

Description

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.

Analysis

也是模拟题啦。但是感觉自己写烦了= =。

My Solution

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
//C++
class Solution
{
public:
string tostring(int num)
{

string ans = "";
while(num)
{
ans+=(num%10+'0');
num/=10;
}
reverse(ans.begin(),ans.end());
return ans;
}
public:
string dostring(string s)
{

string ans="";
int num = 0;
for(int i = 0,j = 0; i<(int)s.length();)
{
if(s[i]==s[j])
{
num++;
i++;
}
else
{
ans = ans + this->tostring(num) + s[i-1];
j = i;
num = 0;
}
}
if(num)
ans = ans + this->tostring(num) + s[s.length()-1];
return ans;
}
public:
string countAndSay(int n)
{

string s="1";
for(int i=1; i<n; i++)
{
s = this->dostring(s);
}
return s;
}
};