报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 被读作  "one 1"  ("一个一") , 即 11
11 被读作 "two 1s" ("两个一"), 即 21
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

 

示例 1:

输入: 1
输出: "1"

示例 2:

输入: 4
输出: "1211"

解题思路:

递归,或者递归之后打表,数据量只有30个,打表也是so easy。

Leetcode:38. 报数
更多细节
C++代码
class Solution {
public:
    string countAndSay(int n) {
        if (n == 1) return "1";
        string str = countAndSay(n - 1);
        string res = ""; char sgn = str[0]; int num = 0;
        for (int i = 1; i <= int(str.size()); i++) {
            if (sgn == str[i - 1]) { num++; }
            else { 
                res += string(1, char(num + '0'));
                res += string(1, sgn);
                num = 1;
                sgn = str[i - 1];
            }
        }
        res += string(1, char(num + '0'));
        res += string(1, sgn);
        return res;
    }
};

 

相关文章:

  • 2022-12-23
  • 2021-09-16
  • 2021-07-27
  • 2021-10-13
  • 2021-10-20
  • 2021-12-22
  • 2022-12-23
猜你喜欢
  • 2021-04-05
  • 2022-01-03
  • 2021-07-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-01
相关资源
相似解决方案