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

AC笔记 | Leetcode 0394 —— 辅助栈

394. 字符串解码(中等)

使用辅助栈

根据题意一共有四种情况:

  1. 数字
    • 遇到数字需要对数字从字符变为正确的数字,并入num
  2. 字符
    • 遇到字符,使用StringBuffer类的res对象进行追加
  3. [
    • 遇到 [,需要将num和res分别入栈nums和str
    • 并且将num置0,将res置空
  4. ]
    • 从nums栈中弹出栈顶元素multi,从str栈中弹出栈顶元素sub
    • 将sub放入一个字符串缓存subf中
    • 将res重复multi次,之后追加打牌subf之后
    • 将subf赋值给res

在这里插入图片描述

代码示例

public static String decodeString(String s) {
    LinkedList<Integer> nums = new LinkedList<>();
    LinkedList<String> str = new LinkedList<>();
    int num = 0;
    StringBuffer res = new StringBuffer();
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        // 四种可能
        if (c=='[') {
            nums.addLast(num);
            str.addLast(res.toString());
            num = 0;
            res = new StringBuffer();
        } else if (c>='0'&&c<='9') {
            num = num*10+Integer.valueOf(c-'0');
        } else if (c==']'){
            StringBuffer subf = new StringBuffer();
            int multi = nums.pollLast();
            String sub = str.pollLast();
            subf.append(sub);
            for (int j = 0; j < multi; j++) {
                subf.append(res);
            }
            res = subf;
        } else {
            res.append(c);
        }
    }

    return res.toString();
}

总结:

很显然这道题看答案了,按理来说从数据结构和逻辑都不是很难。

主要出现的问题是 [abc2[ab]ac]

我是将 [abc2[ab 均入栈,然后遇到 ]出栈到 2,得到答案 abab 后,自己混乱了,其实还是可以做下去的

比如把栈作为string栈,abc入栈,遇到 2 也入栈,ab 再入栈,遇到 ] 才出栈组合

相关文章:

  • Idea常用快捷键设置
  • 5.springcloud微服务架构搭建 之 《springboot集成Hystrix》
  • 【历史上的今天】2 月 28 日:阿帕网退役;Quintus 收购 Mustang;同步电流磁芯存储器获得专利
  • Java开发 - MybatisPlus初体验
  • Pytorch模型转TensorRT步骤
  • 【K8S系列】深入解析无状态服务
  • Unity设计模式—服务定位器模式
  • http如何构造请求?
  • 华为OD机试题【单词倒序】用 Java 解 | 含解题说明
  • 基于文心一言的底层视觉理解,百度网盘把「猫」换成了「黄色的猫」
  • hive之视图
  • 多容器共用同一空间的网络、内存、进程
  • @Autowired和@Resource的区别
  • kettle—数据库配置
  • WalletConnect的下一站——去中心化消息应用Web3inbox
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • IDEA常用插件整理
  • Koa2 之文件上传下载
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Cloud中负载均衡器概览
  • 初识MongoDB分片
  • 回顾 Swift 多平台移植进度 #2
  • 时间复杂度与空间复杂度分析
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 栈实现走出迷宫(C++)
  • 【云吞铺子】性能抖动剖析(二)
  • ​configparser --- 配置文件解析器​
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $.ajax中的eval及dataType
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)elasticsearch 源码之启动流程分析
  • (一)RocketMQ初步认识
  • (原創) 物件導向與老子思想 (OO)
  • (转)jQuery 基础
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @ModelAttribute使用详解
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ JavaScript ] JSON方法
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [ACM] hdu 1201 18岁生日
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [CERC2017]Cumulative Code