-
解题思路:就是一个递归。弄清楚题目意思,n=1时,就返回
1
,然后n=2时,返回上一个结果,上一个结果是一个1,所以就是11
,然后n=3,返回上一个结果,就是两个1,所以就是21
-
代码
class Solution { public: string countAndSay(int n) { if (n == 1) { return "1"; } string next = countAndSay(n - 1); string cur = ""; for (int i = 0; i < next.length(); ++i) { int count = 1; while(i + 1 < next.length() && next[i] == next[i + 1]) { count++; i++; } cur += to_string(count); cur.push_back(next[i]); } return cur; } };