/*这是一道模拟题。第n个序列是根据n-1个序列获得的,所以
通过n-1次循环即可获得结果。*/
class Solution {
public:
string countAndSay(int n) {
string res("1");
while(--n) res = getNext(res);
return res;
}
string getNext(string &s){
string res("");
for(int i = 0; i < s.size();){
int j = i + 1;
for(; j < s.size(); ++j){
if(s[j] != s[i]) break;
}
res += num2string(j-i) + s[i];
i = j;
}
return res;
}
string num2string(int num){
string res("");
while(num > 0){
char c = '0' + num%10;
res += c;
num /= 10;
}
reverse(res.begin(), res.end());
return res;
}
};