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

【Hot100】LeetCode—394. 字符串解码

目录

  • 1- 思路
    • 栈实现+四种情况处理
  • 2- 实现
    • 394. 字符串解码——题解思路
  • 3- ACM 实现

  • 原题链接:394. 字符串解码

1- 思路

栈实现+四种情况处理

  • ① 遇到数字,进行倍数相加 、②遇到左括号,压栈之前的元素、③遇到右括号弹出,栈进行拼接、④否则遇到字母,直接拼接在 res
  • 通过栈,实现先进后出的思想

对于输入 3[a2[c]] 的输入,在读到 3[得到第一个括号 [ 之后才会进行入栈操作,也就是将之前的 3 入栈到一个 multi的栈中

    1. 定义一个 multi 变量用于存储倍数,也就是当前字符串扩大的倍数。
    1. 定义 res变量用于存储临时结果,如果读到的是字符,一直更新 res

读取过程

  • 读取数字:一开始如果读取的都是数字 multi,则对 multi*10 + c - '0'; 的方式
  • 读取字符:如果读取字符,暂存到 res 中,是否压栈取决于遇到的括号
  • 遇到 '[' 括号:如果遇到了左括号,则将 '[' 前状态的 数字 multi 和字符 res 进行压栈,之后重新更新 multires
  • 遇到 ']' 括号:如果遇到了右括号,则需要弹栈,进行处理


2- 实现

394. 字符串解码——题解思路

在这里插入图片描述

class Solution {public String decodeString(String s) {StringBuilder res = new StringBuilder();int multi = 0;// 两个栈Deque<Integer> stack_multi = new ArrayDeque<>();Deque<String> stack_str = new ArrayDeque<>();for(Character c: s.toCharArray()){//  0-9if( c>='0' && c<='9'){multi = multi*10 + c-'0';}else if(c == '['){stack_multi.push(multi);stack_str.push(res.toString());multi = 0;res = new StringBuilder();}else if(c == ']'){StringBuilder tmp = new StringBuilder();int curMulti = stack_multi.pop();for(int i = 0 ; i < curMulti;i++){tmp.append(res);}res = new StringBuilder(stack_str.pop()).append(tmp);}else{res.append(c);}}return res.toString();}
}

3- ACM 实现

public class strDecode {public static String strDecode(String str){// 1. 数据结构int multi = 0;StringBuffer res =  new StringBuffer();// 数字倍数Deque<Integer> stack_multi = new ArrayDeque<>();Deque<String> stack_res = new ArrayDeque<>();// 遍历字符串 strfor(Character c : str.toCharArray()){// 如果是数字 更新倍数if( c>='0' && c<= '9'){multi = multi *10 + c - '0';}else if( c == '['){// 压栈stack_multi.push(multi);stack_res.push(res.toString());// 重置multi = 0;res = new StringBuffer();}else if(c==']'){// 出栈计算int nowMulti = stack_multi.pop();StringBuffer tmp = new StringBuffer();for(int i = 0 ; i < nowMulti;i++){tmp = tmp.append(res);}res = new StringBuffer(stack_res.pop()).append(tmp);}else{res.append(c);}}return res.toString();}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();System.out.println("结果是"+strDecode(input));}
}

相关文章:

【Hot100】LeetCode—394. 字符串解码

目录 1- 思路栈实现四种情况处理 2- 实现⭐394. 字符串解码——题解思路 3- ACM 实现 原题链接&#xff1a;394. 字符串解码 1- 思路 栈实现四种情况处理 ① 遇到数字&#xff0c;进行倍数相加 、②遇到左括号&#xff0c;压栈之前的元素、③遇到右括号弹出&#xff0c;栈进行…...

12. 如何在MyBatis中进行分页查询?常见的分页实现方式有哪些?

在MyBatis中&#xff0c;分页查询是一种常见的需求&#xff0c;尤其是在处理大数据量的情况下。MyBatis本身不直接提供分页功能&#xff0c;但可以通过以下几种常见的实现方式来实现分页查询。 1. 手动分页 这是最基本的分页方式&#xff0c;直接在SQL语句中添加分页参数。不同…...

@[TOC](力扣题目-滑动窗口-qsort排序-二分法查找)

通信 LCR 009. 乘积小于 K 的子数组268. 丢失的数字287. 寻找重复数 LCR 009. 乘积小于 K 的子数组 已解答 滑动窗口 给定一个正整数数组 nums和整数 k &#xff0c;请找出该数组内乘积小于 k 的连续的子数组的个数。 示例 1: 输入: nums [10,5,2,6], k 100 输出: 8 解释…...

Docker容器相关命令

Docker是一种容器化技术&#xff0c;可以帮助用户更轻松地创建、部署和管理容器。下面是一些常见的Docker容器管理任务&#xff1a; 创建容器&#xff1a;使用Docker镜像创建一个新的容器。 docker run image_name列出容器&#xff1a;查看当前运行的容器列表。 docker ps启动容…...

【老课推荐】基于LangChain和知识图谱的大模型医疗问答机器人项目

在当今数据驱动和人工智能主导的时代&#xff0c;大模型和知识图谱的结合是一个重要的研究和应用方向。大模型实战课程通过48课时&#xff0c;分为六个主要章节&#xff0c;涵盖了从基本概念到高级应用的多方面内容。学员将通过本课程学习如何使用LangChain和OpenAI进行开发&am…...

Adobe Sensei——自动化视频编辑、特效应用和素材增强,通过AI技术快速优化视频内容,自动修复视频质量、自动添加背景音乐或字幕

一、Adobe Sensei介绍 Adobe Sensei 是 Adobe 公司开发的一款基于人工智能和机器学习技术的平台&#xff0c;旨在增强其各种创意、文档和体验管理工具。Adobe Sensei 通过深度学习、计算机视觉、自然语言处理&#xff08;NLP&#xff09;等先进技术&#xff0c;帮助用户在 Ado…...

【AIGC数字人】EchoMimic:基于可编辑关键点条件的类人音频驱动肖像动画

GitHub&#xff1a;https://github.com/BadToBest/EchoMimic 论文&#xff1a; https://arxiv.org/pdf/2407.08136 comfyui&#xff1a; https://github.com/smthemex/ComfyUI_EchoMimic 相关工作 Wav2Lip Wav2Lip是一个开创性的工作 &#xff0c;但输出会出现面部模糊或扭…...

变量数据类型 Day3

1. 变量 1.1 变量的概念 变量是计算机内存中的一块存储单元&#xff0c;是存储数据的基本单元变量的组成包括&#xff1a;数据类型、变量名、值&#xff0c;后文会具体描述变量的本质作用就是去记录数据的&#xff0c;比如说记录一个人的身高、体重、年龄&#xff0c;就需要去…...

SpringBoot2:请求处理原理分析-RESTFUL风格接口

一、RESTFUL简介 Rest风格支持&#xff08;使用HTTP请求方式&#xff0c;动词来表示对资源的操作&#xff09; 以前&#xff1a;/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在&#xff1a; /user GET-获取用户 DELETE-删除用户 PUT-修改…...

[Linux][配置]Linux修改history存储的最大记录数

Linux修改History最大记录为20000行 sed -i s/^HISTSIZE1000/HISTSIZE20000/ /etc/profile source /etc/profile 在 Linux 系统中&#xff0c;HISTSIZE 环境变量用于定义历史记录的大小&#xff0c;即在终端中可以回溯的命令数量。默认情况下&#xff0c;这个值通常是 1000&…...

代码随想录 刷题记录-28 图论 (5)最短路径

一、dijkstra&#xff08;朴素版&#xff09;精讲 47. 参加科学大会 思路 本题就是求最短路&#xff0c;最短路是图论中的经典问题即&#xff1a;给出一个有向图&#xff0c;一个起点&#xff0c;一个终点&#xff0c;问起点到终点的最短路径。 接下来讲解最短路算法中的 d…...

大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

C++复习day04

一、函数重载 1.什么是函数重载&#xff1f; 自然语言中&#xff0c;一个词可以有多重含义&#xff0c;人们可以通过上下文来判断该词真实的含义&#xff0c;即该词被重 载了。 比如&#xff1a;以前有一个笑话&#xff0c;国有两个体育项目大家根本不用看&#xff0c;也不用…...

[苍穹外卖]-04菜品管理接口开发

效果预览 新增菜品 需求分析 查看产品原型分析需求, 包括用到哪些接口, 业务的限制规则 业务规则 菜品名称必须是唯一的菜品必须属于某个分类下, 不能单独存在新增菜品时可以根据情况选择菜品的口味每个菜品必须对应一张图片 接口设计 根据类型查询分类接口 文件上传接口 …...

gitlab 启动/关闭/启用开机启动/禁用开机启动

文章目录 启动 gitlab关闭 gitlab查看 gitlab 运行状态启用 gitlab 开机启动禁用 gitlab 开机启动GitlabGit启动 gitlab hxstrive@localhost:~$ sudo gitlab-ctl start ok: run: alertmanager: (pid 65953) 0s ok: run: gitaly: (pid 65965) 0s ok: run: gitlab-exporter: (pi…...

中间件解析漏洞(附环境搭建教程)

⼀&#xff1a;IIS解析漏洞 环境资源&#xff1a; https://download.csdn.net/download/Nai_zui_jiang/89717504 环境安装 windows2003iis6 1.创建新的虚拟机 2.在下⼀步中选择我们的iso⽂件镜像 vm已主动识别到windows2003 3.产品密钥⽹上搜⼀个 密码自己设置一个简单的&…...

matlab实现kaiser窗+时域采样序列(不管原信号拉伸成什么样子)是一样的,变到频谱后再采样就是一样的频域序列。

下图窗2的频谱在周期化的时候应该是2&#xff08;w-k*pi/T&#xff09;我直接对2w减得写错了 可见这两个kaiser窗频谱不一样&#xff0c;采样间隔为2T的窗&#xff0c;频谱压缩2倍&#xff0c;且以原采样频率的一半周期化。 但是这两个不同的kaiser窗在频域采样点的值使完全一…...

git为不同的项目设置不同的提交作者

方法1&#xff1a;找到项目的.git文件夹打开 打开config在下面添加自己作者信息 [user]name 作者名email 邮箱方法2&#xff1a;直接在.git文件夹设置作者名&#xff08;不使用–global参数&#xff09; git config user.name "xxxxx"如果想要修改之前提交的…...

防爆定位信标与防爆定位基站有什么区别?

新锐科技 https://baijiahao.baidu.com/s?id1804974957959442238&wfrspider&forpc http://www.xinruikc.cn/biaoqian/52.html http://www.xinruikc.cn/xinbiao/...

QT 编译报错:C3861: ‘tr‘ identifier not found

问题&#xff1a; QT 编译报错&#xff1a;C3861&#xff1a; ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中&#xff0c; 解决方案 就直接用类名引用 &#xff1a;QObject::tr( )...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...