【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;
    }
};
相关推荐
郝学胜_神的一滴3 分钟前
CMake 018:解决头文件编译失效\&VS项目无法展示头文件难题
c++·cmake
多彩电脑4 分钟前
Lua基础入门
开发语言·lua
码云骑士6 分钟前
29-Python-logging日志模块-print不是日志的生产级实战
开发语言·python
影视飓风TIM6 分钟前
C++ 核心语法进阶:【类和对象终章】从对象拷贝到友元与优化(补上期重载)
c++
小鹏linux6 分钟前
鸿蒙PC迁移:Tesseract OCR C++ 三方库鸿蒙适配全记录
c++·ocr·harmonyos
森G6 分钟前
65、UDP协议(拓展选学)---------网络编程
网络·c++·qt·网络协议·tcp/ip·udp
WWW652610 分钟前
代码随想录 打卡第五十八天
开发语言·c++·算法
pen-ai12 分钟前
【HistGBM 系列①】从决策树到梯度提升 —— GBDT 原理精讲
算法·决策树·机器学习
少司府16 分钟前
C++基础入门:_stack_queue 底层奥秘
开发语言·数据结构·c++·栈和队列·queue·stack
Cheng小攸20 分钟前
协议分析与分析工具(二)
开发语言·php