模拟-38.外观数列-力扣(LeetCode)

一、题目解析

1、替换的方法:“33”用“23”替换,即找到相同的数,前一位为相同数的数量,后一位为相同的数

2、给定n,需要返回外观数列的第n个元素

二、算法原理

由于需要统计相同元素的数目,所以可以使用双指针来统计数目

解法:模拟+双指针

借助双指针统计数目后,按照规则加入到新的字符串中,并以新的字符串继续进行转换。对于本题right可以越界原因:1、双指针只用于统计数量;2、right指针不会访问ret字符串

三、代码示例

class Solution {
public:
    string countAndSay(int n)
    {
        string ret = "1";
        if(n == 1) return "1";
        n -= 1;
        while(n--)
        {
            string s;
            for(int left = 0,right = 0;right<=ret.size();right++)
            {
                if(ret[left] != ret[right])
                {
                    int count = right - left;
                    s += to_string(count);
                    s += ret[left];
                    left = right;
                }
            }
            ret = s;
        } 
        return ret;
    }
};

to_string作用:将整形转化为string

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值