输出字符串Count and Say

系统 1607 0

最近研究输出字符串,稍微总结一下,以后继续补充:

    标题如下:

    The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...

     1 is read off as "one 1" or 11 .
11 is read off as "two 1s" or 21 .
21 is read off as "one 2 , then one 1" or 1211 .

    Given an integer n , generate the n th sequence.

    Note: The sequence of integers will be represented as a string.

    分析:题意是n=1时输出字符串1;n=2时,数前次字符串中的数值个数,因为前次字符串有1个1,所以输出11;n=3时,由于前次字符是11,有2个1,所以输出21;n=4时,由于前次字符串是21,有1个2和1个1,所以输出1211;顺次类推。

    此题我没有找到数学律规,且暂就用最简略的法想做,关键是考核string的作操。

    码代如下:

    每日一道理
信念是巍巍大厦的栋梁,没有它,就只是一堆散乱的砖瓦;信念是滔滔大江的河床,没有它,就只有一片泛滥的波浪;信念是熊熊烈火的引星,没有它,就只有一把冰冷的柴把;信念是远洋巨轮的主机,没有它,就只剩下瘫痪的巨架。

 string numbertostring(int & num)
    {
        string tmp;
        if(num<=9)
        {
           tmp.push_back(num + '0');
        }
        else
        {
            vector<int> over10num;                                 
            while(num>0)                                 
            {                                     
                over10num.push_back(num%10);
                num = num/10;                                 
            }                                 
            int len_num = over10num.size();                                 
            for(int k=len_num-1;k>=0;--k)
            {
                tmp.push_back(over10num[k] + '0');
            }
        }
        return tmp;
    }
    string countAndSay(int n) {
        string s;
        if(n<=0)return s;
        s.push_back('1');
        int number=1;
        while(number!=n)
        {
            string tmp;
            int length = s.length();
            for(int i=0;i<length;)
            {
                int num=1,j=i+1;
                while(j<length&&s[j]==s[i])
                {
                    num++;
                    j++;
                }
                tmp+=numbertostring(num);
                tmp+=s[i];
                i=j;
            }
            number++;
            s=tmp;
        }
        return s;
    }

    

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

输出字符串Count and Say


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论