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

吉首做网站医疗器械四大龙头企业

吉首做网站,医疗器械四大龙头企业,网站编辑是什么,网站建设不好题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…

题目

394. 字符串解码 - 力扣(LeetCode)

思路

使用两个栈:一个存储重复次数,一个存储字符串

遍历输入字符串:

  • 数字处理:遇到数字时,累积计算重复次数
  • 左括号处理:保存当前状态(入栈),开始处理新的嵌套部分
  • 字母处理:直接添加到当前字符串,不涉及栈操作
  • 右括号处理:完成当前嵌套部分,应用重复规则,恢复之前的状态(出栈)

最终返回处理后的字符串

该算法能够处理嵌套的编码,例如"2[a2[bc]]"这样的情况。时间复杂度为O(n),其中n是输入字符串的长度。

过程

  • countStack: []
  • strStack: []
  • currentStr: ""
  • count: 0

处理字符 '3'

字符: '3'
操作: 数字 → 更新count = 3
countStack: []
strStack: []
currentStr: ""
count: 3

处理字符 '['

字符: '['
操作: 左括号 → 保存当前状态,重置当前变量
countStack: [3]  ← 入栈
strStack: [""]   ← 入栈
currentStr: ""   ← 重置
count: 0         ← 重置

 处理字符 'a'

字符: 'a'
操作: 字母 → 添加到currentStr
countStack: [3]
strStack: [""]
currentStr: "a"  ← 添加'a'
count: 0

处理字符 ']'

字符: ']'
操作: 右括号 → 出栈并应用重复
countStack: []   ← 弹出3
strStack: []     ← 弹出""
重复计算: "" + "a"*3 = "aaa"
currentStr: "aaa"  ← 更新
count: 0

 处理字符 '2'

字符: '2'
操作: 数字 → 更新count = 2
countStack: []
strStack: []
currentStr: "aaa"
count: 2         ← 更新

  处理字符 '['

字符: '['
操作: 左括号 → 保存当前状态,重置当前变量
countStack: [2]      ← 入栈
strStack: ["aaa"]    ← 入栈
currentStr: ""       ← 重置
count: 0             ← 重置

 处理字符 'b'

字符: 'b'
操作: 字母 → 添加到currentStr
countStack: [2]
strStack: ["aaa"]
currentStr: "b"      ← 添加'b'
count: 0

 处理字符 'c'

字符: 'c'
操作: 字母 → 添加到currentStr
countStack: [2]
strStack: ["aaa"]
currentStr: "bc"     ← 添加'c'
count: 0

 处理字符 ']'

字符: ']'
操作: 右括号 → 出栈并应用重复
countStack: []       ← 弹出2
strStack: []         ← 弹出"aaa"
重复计算: "aaa" + "bc"*2 = "aaa" + "bcbc" = "aaabcbc"
currentStr: "aaabcbc"  ← 更新
count: 0

  处理结束

最终结果: "aaabcbc"

一些难点解读

正确写法

class Solution {
public:string decodeString(string s) {stack<int> countStack;stack<string> strStack; string currentStr = "";int count = 0;for(int i = 0; i<s.size();i++){if(isdigit(s[i])){count = count * 10 + (s[i] - '0');}else if(s[i] == '['){countStack.push(count);strStack.push(currentStr);count = 0;currentStr = "";}else if(s[i] == ']'){int repeatTimes = countStack.top();countStack.pop();string decodedStr = strStack.top();strStack.pop();for(int i = 0; i< repeatTimes; i++){decodedStr += currentStr;}currentStr = decodedStr;}else{currentStr += s[i];}}return currentStr;}
};

http://www.dtcms.com/a/445390.html

相关文章:

  • 最好网站建设公司排名wordpress代码实现图片放大
  • 企业网站的搜索引擎推广与优化邢台网站建设企业
  • 想做个网站怎么做学生个人静态网页制作过程
  • 漳浦网站开发asp.net 网站 方案
  • python做网站快吗阿里云域名注册官网首页
  • react用于网站开发网页设计与制作哪家公司好
  • .net 网站开发教程建设网站容易吗
  • 上海市建设合同信息表网站凡科企业邮箱登录入口
  • 双鸭山网站建设企业网址大全安装app
  • 无锡网站建设品牌大全网络舆情网站
  • 如果做夺宝网站古风ppt模板免费下载
  • 建网站能挣钱吗东莞seo快速排名
  • 网站建设专家证书网站定制排名
  • 做学习交流网站东营最新通知
  • 企业网站建设的评价指标直播软件怎么开发
  • 买过域名之前就可以做网站了吗温岭网站建设
  • 游仙建设局官方网站企业建设好一个网站后 如何进行网站推广
  • 做影视网站代理犯法吗vps设置网站访问用户权限
  • 泰州网站建设电话网站搭建心得体会
  • 自己动手建立网站3wordpress page页
  • 百度网站两两学一做心得体会广告公司取名大全最新版的
  • 做书封面的模板下载网站优秀的电商设计网站
  • 网站设计销售关于网站建设的题目
  • 用照片做的ppt模板下载网站好linux系统上的wordpress
  • 做网站资质荣誉用的图片佛山手工活外发加工网
  • 淘宝商城的网站建设怎样做 云知梦 网站
  • 150m网站空间流量大吗淘宝页面设计模板
  • 在线直播网站建设免费商城网站建设平台
  • 钢铁网站建设wordpress 按点击调用热门文章
  • 英文网站建站做网站界面设计注意什么