【C++算法】41模拟_外观数列

文章目录


题目链接:

38. 外观数列


题目描述:


解法

演示:

模拟+双指针:

right++,直到leftright不同才停下来。

count=right-left


C++ 算法代码:

cpp 复制代码
class Solution 
{
    public:
    string countAndSay(int n) 
    {
        string ret = "1"; // 初始化结果字符串为第一个序列 "1"
        for(int i = 1; i < n; i++) // 循环解释 n - 1 次以生成第 n 个序列
        {
            string tmp; // 临时字符串,用于存储当前解释的结果
            int len = ret.size();
            for(int left = 0, right = 0; right < len; ) // 使用双指针 left 和 right 来遍历字符串
            {
                while(right < len && ret[left] == ret[right]) right++; // 移动右指针,直到找到与左指针不同的字符
                tmp += to_string(right - left) + ret[left]; // (right - left)计算相同字符的数量,将数量和对应的字符添加到临时字符串中
                left = right; // 更新左指针到右指针的位置,开始下一轮计数
            }
            ret = tmp; // 更新结果字符串为当前解释的结果
        }
        return ret;
    }
};
相关推荐
wuyk555几秒前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
木子算法1 分钟前
不是重心也不是中点:费马—韦伯点、它的最优性条件与迭代求解
人工智能·算法·目标跟踪
邪修king10 分钟前
Re:Linux 系统篇(三十四):进程间通信开篇Chapter1 —— 匿名管道 pipe 深度拆解与代码实战
android·linux·运维·开发语言
程序员AlbertTu30 分钟前
# Mantissa 使用教程 — Python 版与 C++ 版
c++·python·数值运算
孙启超33 分钟前
【AI开发之Rust】第 13 课:async/await 与 tokio 异步运行时
开发语言·后端·rust
Am-Chestnuts43 分钟前
DeepSeek内容转Word有哪几种方法?用DS随心转对比6条主流路径
开发语言·人工智能
大黄说说44 分钟前
App 启动速度优化:冷启动从 3s 降到 800ms 完整实操
开发语言
Lazionr1 小时前
多态:从多种形态到运行时绑定
开发语言·c++