一开始根本看不懂题,找不到规律然后在网上看到有的朋友是这样解读的。
1. 1
2. 11
3. 21
4. 1211
5. 111221
第一次是默认是1,然后读1 就是11,然后读11,就是21,然后读21,就是1211,然后依次类推,看到这个解读的时候才恍然大悟,然后就是写代码了。
string countAndSay(int n) {
if(n<=0) return "";
string prev="1";
if(n==1)return"1";
for(int i=2;i<=n;i++){
char curchar=prev[0];
int count=1;
string temp="";
for(int k=0;k<prev.size();k++){
if(k+1<prev.size()&&prev[k+1]==prev[k]){
count++;
}##这个地方直接写一个while循环也是可以的,
else{
temp.push_back(count+'0');
temp.push_back(prev[k]);
count=1;
}
}
prev=temp;###每次更新当前的需要读的字符串。
}
return prev;
}