【栈】394. 字符串解码

news/2024/11/16 23:36:16/

394. 字符串解码

解题思路

  • 构造辅助栈stack 遍历字符串s的每一个字符c
  • 当c为数字的时候 将数字转化为数字multi
  • 当c是字母的时候直接在builder尾部添加c
  • 当c是[ 将Multi 入stack1 builder转换为字符串 入stack2 然后全部初始化
  • 将[之前的临时结果builder 入栈stack2 用来发现对应]之后的拼接操作
  • 记录此前的Multi 发现]之后 获取multi * 字符串
  • 当c是]之后 取出stack2栈顶元素 根据multi 计算重复字符串 最后再次取出栈顶元素字符串 拼接
class Solution {public String decodeString(String s) {
// 使用栈结构// 字节后端面试题目StringBuilder builder = new StringBuilder();int multi = 0;// 创建两个栈Stack<Integer> stack1 = new Stack<>();Stack<String> stack2 = new Stack<>();// 遍历字符串for(Character c:s.toCharArray()){if(c == '['){// 将前面的字符入栈// 数字字符进入stack1stack1.push(multi);// 字符串进入stack2stack2.push(builder.toString());// StringBuilder 转换为字符串// 之后清空multi 以及buildermulti = 0;builder = new StringBuilder();}else if(c == ']'){StringBuilder tmp = new StringBuilder();int temp = stack1.peek();// 取出栈顶元素 也就是最后一个进入栈的元素  也就是栈顶元素stack1.pop();// 将res 全部添加到tmpfor(int i = 0; i < temp; i++){tmp.append(builder);// 拼接这些字符串}// 同时将stack2的栈顶元素 拼接tmpbuilder = new StringBuilder(stack2.peek() + tmp);stack2.pop();}else if(c >= '0' && c <= '9'){multi = multi * 10 + Integer.parseInt(c + "");}else{builder.append(c);}}// res.append(c);return builder.toString();}
}

http://www.ppmy.cn/news/1030576.html

相关文章

PLUS操作流程、应用与实践,多源不同分辨率数据的处理、ArcGIS的应用、PLUS模型的应用、InVEST模型的应用

PLUS模型是由中国地质大学&#xff08;武汉&#xff09;地理与信息工程学院高性能空间计算智能实验室开发&#xff0c;是一个基于栅格数据的可用于斑块尺度土地利用/土地覆盖(LULC)变化模拟的元胞自动机(CA)模型。PLUS模型集成了基于土地扩张分析的规则挖掘方法和基于多类型随机…

linux4.0新增32位ARM的系统调用

修改内核源码 Linux系统为每一个系统调用赋予一个系统调用号。当应用程序执行一个系统调用时&#xff0c;应用程序就可以知道执行和调用到哪个系统调用了&#xff0c;从而不会造成混乱。系统调用号一旦分配之后就不会有任何变更&#xff0c;否则已经编译好的应用程序就不能运行…

MySQL中的用户管理

系列文章目录 MySQL常见的几种约束 MySQL中的函数 MySQL中的事务 MySQL中的视图 MySQL中的索引 文章目录 系列文章目录前言一、用户管理1、用户管理入门2、用户管理操作及示例 二、权限管理1.权限管理语法2.权限操作示例 三、角色管理1、角色管理入门2、角色操作示例 总结…

通过将信号频谱与噪声频谱进行比较,自动检测适当的带通滤波器转折频率研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

怎么把太大的视频压缩变小?这样压缩很轻松

很多网站或者平台对于上传的视频都是有大小限制的&#xff0c;当视频文件体积过大时&#xff0c;我们就需要进行压缩操作&#xff0c;下面就给大家分享几个实用的视频压缩方法&#xff0c;不仅压缩率高&#xff0c;还能保证视频清晰度哦~ 一、HandBrake 这是一款免费的视频处理…

对p-n结/AlGaN/GaN HEMTs中n-GaN掺杂浓度对栅极可靠性的影响

目录 第35届功率半导体器件与集成电路国际研讨会论文集2023年5月28日至6月1日&#xff0c;中国香港南方科技大学电气电子工程系&#xff0c;深圳标题&#xff1a;Impacts of n-GaN Doping Concentration on Gate Reliability of p-n Junction/AlGaN/GaN HEMTs摘要信息解释研究了…

小红书Java后端2023-8-6笔试

小红书推荐系统 时间限制&#xff1a;3000MS&#xff1b;内存限制&#xff1a;589824KB 题目描述 小红书有一个推荐系统&#xff0c;可以根据用户搜索的关键词推荐用户希望获取的内容。现在给定小孩的搜索记录&#xff08;记录是分词后的结果&#xff09;&#xff0c;我们认…

gitui 解决 git error:Bad credentials.

问题描述 cat .git/config """ [remote "origin"]url gitgitcode.net:xxx.gitfetch refs/heads/*:refs/remotes/origin/* """ls -lh ~/.ssh/ """ -rw------- 1 z z 2.6K 8月 12 15:04 id_rsa -rw-r--r-- 1 z z 56…