leetcode 38 外观数列

一、题目描述

二、解题思路

整体思路

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

具体思路

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

(2)定义变量left和right充当双指针,retleft就是字符的种类,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;
    }
};
相关推荐
非优秀程序员7 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
文丑颜不良啊10 小时前
LeetCode2481~2500题目解析
java·leetcode
武子康14 小时前
驾驶轨迹换个坐标,就能给移动机器人用吗?
人工智能·算法·机器学习
David猪大卫14 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger14 小时前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
文丑颜不良啊16 小时前
LeetCode2461~2480题目解析
java·leetcode
努力努力再努力wz17 小时前
【Lua 进阶系列】从 C++ 对象到 Lua 变量:一文理解 userdata、Lua 栈与元表绑定机制
c++·junit·lua
慧都产品智能化17 小时前
Qt 表格升级攻略:复用已有编辑器,减少重复开发
c++·qt·编辑器·qt6.3
ShineWinsu18 小时前
对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析
开发语言·c++·qt·gui·客户端·表格·qtablewidget