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.
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
class Solution {
public:
string countAndSay(int n) {
if(n == 0) return NULL;
if(n==1) {
return "1";
}
string ret = countAndSay(n-1);
string ans = "";
int len = ret.length();
char pre = ret[0], count = '1';
for(int i=1; i < len; i++) {
if(ret[i] == pre) {
count++;
} else {
ans=ans+count+pre;
count = '1';
pre = ret[i];
}
}
ans = ans+count+pre;
return ans;
}
}