题源:LeetCode
解析:第一感觉是递归实现,但能用递归的也都能用栈来解决。讲一下递归思路,也参考了大佬的题解:要先知道此时n的输出结果,必须知道前一个输出结果,依次类推,直到n=1,然后将时的字符串返回给n=2,对其进行遍历(若遇到不到相同就累加记录,不同就将累加的值作为此时遍历字符的数量,加到数据结果,并加上此时遍历字符),依次递归返回字符串。
代码 :
class Solution {
public:
string countAndSay(int n) {
if(n==1) return "1";
int count=1;
string previous=countAndSay(n-1),res="";
for(int i=0;i<previous.size();i++){
if(previous[i]==previous[i+1]){
count++;
}
else{
res+=to_string(count)+previous[i];
count=1;
}
}
return res;
}
};