其实思路很简单,递归调用求出n-1的字符串,然后遍历判断每个数字对应的次数,转化为str输出即可。
class Solution {
public:
string countAndSay(int n) {
if(n == 1){
return "1";
}
else if(n == 2){
return "11";
}
string sub = countAndSay(n-1);
int len = 1, state = 0;
char curCh = sub[0];
string curStr = "";
for(int i = 1; i < sub.size(); i++){
char ch = sub[i];
if(ch == curCh){
len++;
}
else{
curStr += char('0' + len);
curStr += char(curCh);
len = 1;
curCh = ch;
}
}
curStr += char('0' + len);
curStr += curCh;
return curStr;
}
};