刷leetcode-day9

一、题目:

38.报数:

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

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:

实例2:

二、思路:

报数数列的规律:下一个数列是上一个数列依次把每个数的连续重复个数和该数输出。

因此构造一个报数数列生成函数say,然后countAndSay函数读入n,就把say迭代n次返回。

三、代码(C++):

class Solution {
public:
    string say(string s)       //构造的报数数列生成函数
        {
            int a=s[0];
            int k=0;
            string s1;
            for(int i=0;i<s.size();i++)
            {
                if(s[i]==a)
                    k++;
                else
                {
                    s1+=to_string(k);
                    s1.push_back(a);
                    a=s[i];
                    k=1;
                }
            }
            s1+=to_string(k);
            s1.push_back(a);
            return s1;
        }
    string countAndSay(int n) {
        string b="1";
        for(int i=0;i<n-1;i++)         //将say函数迭代n次
            b=say(b);
        return b;
    }
};

四、注意:

函数里不能再定义另一个函数;注意类型转换;push_back()函数

全部评论

相关推荐

给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
昨天 13:42
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务