leetcode 38 外观数列

一、题目描述

二、解题思路

整体思路

可以采用模拟+双指针的方法来解决这个题目。

具体思路

(1)返回数列的第n项,需要描述n-1次;

(2)定义变量left和right充当双指针,ret[left]就是字符的种类,right-left就是该字符出现的次数,将二者转成字符串,然后加入tmp字符串;

(3)ret字符串遍历完成后,将ret更新为tmp字符串,直到描述完n-1次,返回ret即可。

三、代码实现

cpp 复制代码
class Solution {
public:
    string countAndSay(int n) {
      //模拟+双指针
      string ret="1";
      //描述n-1次
      for(int i=1;i<n;i++){
        string tmp;
        for(int left=0,right=0;right!=ret.size();){
            while(ret[left]==ret[right]) right++;
            tmp+=to_string(right-left)+ret[left];
            left=right;
        }
        ret=tmp;
      }
      return ret;
    }
};
相关推荐
hn小菜鸡13 小时前
LeetCode 1089.复写零
算法·leetcode·职场和发展
与己斗其乐无穷14 小时前
算法(一)双指针法
数据结构·算法·排序算法
艾莉丝努力练剑14 小时前
【编码表 && STL】C++编程基石:从字符编码表到STL标准库的完整入门指南
java·linux·c++
工头阿乐14 小时前
Ubuntu 安装与使用C++ onnxruntime库
linux·c++·ubuntu
无挂写代码14 小时前
C++入门
开发语言·c++
努力努力再努力wz14 小时前
【C++进阶系列】:位图和布隆过滤器(附模拟实现的源码)
java·linux·运维·开发语言·数据结构·c++
争不过朝夕,又念着往昔14 小时前
利用计时器了解Boost Asio
c++
(❁´◡`❁)Jimmy(❁´◡`❁)15 小时前
【Trie】 UVA1401 Remember the Word
算法·word·图论
青草地溪水旁16 小时前
设计模式(C++)详解——代理模式 (Proxy Pattern)(1)
c++·设计模式·代理模式
小年糕是糕手16 小时前
【C语言】C语言预处理详解,从基础到进阶的全面讲解
linux·c语言·开发语言·数据结构·c++·windows·microsoft