一开始不知道题目什么意思,后来明白这样啊。
所以就递归调用
一开始还害怕是否有什么规律没有发现,会不会大集合时间超标,然后过了。
怎么又是一个那么简单的题目、
class Solution {
public:
string countAndSay(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(n==0) return "";
else if(n==1) return "1";
else if(n==2) return "11";
else if(n==3) return "21";
else
{
string sub=countAndSay(n-1);
char prev=sub[0];
int count=1;
string str="";
for(int i=1;i<sub.length();i++)
{
if(sub[i]==prev)
{
count++;
}
else
{
string num(1,'0'+count);
str+=num+prev;
prev=sub[i];
count=1;
}
}
if(count>0)
{
string num(1,'0'+count);
str+=num+prev;
}
return str;
}
}
};