当前位置: 首页 > article >正文

C++ | Leetcode C++题解之第394题字符串解码

题目:

题解:

class Solution {
public:
    string src; 
    size_t ptr;

    int getDigits() {
        int ret = 0;
        while (ptr < src.size() && isdigit(src[ptr])) {
            ret = ret * 10 + src[ptr++] - '0';
        }
        return ret;
    }

    string getString() {
        if (ptr == src.size() || src[ptr] == ']') {
            // String -> EPS
            return "";
        }

        char cur = src[ptr]; int repTime = 1;
        string ret;

        if (isdigit(cur)) {
            // String -> Digits [ String ] String
            // 解析 Digits
            repTime = getDigits(); 
            // 过滤左括号
            ++ptr;
            // 解析 String
            string str = getString(); 
            // 过滤右括号
            ++ptr;
            // 构造字符串
            while (repTime--) ret += str; 
        } else if (isalpha(cur)) {
            // String -> Char String
            // 解析 Char
            ret = string(1, src[ptr++]);
        }
        
        return ret + getString();
    }

    string decodeString(string s) {
        src = s;
        ptr = 0;
        return getString();
    }
};

http://www.kler.cn/a/289541.html

相关文章:

  • 【MySQL】数据库约束和多表查询
  • 精度论文:【Focaler-IoU: More Focused Intersection over Union Loss】
  • 【算法】枚举
  • 如何在Mac上使用Brew更新Cursor应用程序
  • 设计模式-工厂模式/抽象工厂模式
  • C 语言中二维数组的退化
  • Elasticsearch检索原理
  • 2024.9.2 作业
  • Loadrunner12录制时,目标网站打不开的解决办法
  • 光敏电阻传感器详解(STM32)
  • redis之地理空间geo实战以及选项详解
  • Recyclerview部分列固定部分列滑动学习备忘
  • linux 下转化 ppk 文件 为openssh 文件(private,public)
  • 3600关成语填字APP游戏ACCESS\EXCEL数据库
  • 使用脚本编写 HTTP 查询的更有效方法
  • SprinBoot+Vue高校实验室管理微信小程序的设计与实现
  • 网站如何针对不同的DDOS进行防御?
  • 黑马JavaWeb开发笔记10(前端完结)——Vue路由介绍入门、前端工程打包、nginx前端部署
  • IP SSL证书如何实现IP的https
  • Nginx中间件配置
  • RLHF(带有人类反馈的强化学习)初探
  • 科研绘图系列:python语言制标准差的直方图(STD histogram plot)
  • 模拟登录页,华为账号一键登录
  • Charles抓包全流程(Mac端+iOS端)
  • SpringBoot学习(3)Redis使用
  • blender中获取虚拟相机渲染图片上每像素对应的纹理上的像素值