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.
string tostring(int num)
{
string res = "";
while(num)
{
int mod = num%10;
res = char('0' + mod) + res;
num /= 10;
}
return res;
}
string countAndSay(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(n< 0) return NULL;
string seq = "1";
for(int i = 1; i < n; ++i)
{
//cout<<seq<<endl;
string tmp = "";
int count=0;
char current=seq[0];
int index = 0;
while(index < seq.length())
{
if(seq[index] == current)
count++;
else
{
tmp += tostring(count) + current;
current = seq[index];
count = 1;
}
index++;
}
tmp += tostring(count) + current;
seq = tmp;
}
return seq;
}