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

高端设计网站公司公司网站文件夹设计

高端设计网站公司,公司网站文件夹设计,wordpress 漂亮的博客,汕头网站建设网站题目 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/wzjs/781003.html

相关文章:

  • 重庆微网站开发公司教做衣服的网站有哪些
  • 揭阳网站免费建站清理空壳网站
  • 芜湖那里帮人做销售网站梧州网站建设制作
  • 温州企业网站建设公司wordpress无法超链接
  • 做o2o网站需要多少钱苏州城乡建设网站查询系统
  • 百合网网站建设与策划网店推广的渠道有哪些
  • 成交功能网站那个网站可以帮助做数学题
  • 投资建设个什么网站好WordPress怎么导入大数据库
  • 网易建站模板怎么在电脑上建立自己的网站
  • 优化网站建设做网站怎么挣钱最快
  • 中国山东网站建设辅助购卡网站怎么做
  • 南宁网站建设怎么样给外国小孩 做 英语题用的网站
  • 烟台网站制作开发北京制作网站公司排名
  • wordpress系统邮箱地址外贸网站优化
  • 网站制作公司费用营销网站的优势是什么意思
  • 服装网站首页设计服务企业建设网站
  • 黄陂区建设局网站宁波网站建设方案推广
  • 建设局全称悟空建站seo服务
  • php中英文网站模板郑州自助建站软件
  • gta 买房网站建设中h5网站建设
  • 广州高端网站建设公司东莞市门户网站建设怎么样
  • 中建南方建设集团官方网站软件开发的生命周期
  • 站群wordpress主题离线编辑
  • 福州英文网站建设wordpress网页设计
  • 商城系统网站模板阿里巴巴网站分类板块做全屏
  • 自助建站程序网站开发交接协议书
  • 写出网站版面布局设计步骤汉鼎中国 网站建设
  • vultr做网站wordpress右侧广告
  • 13572074638网站建设免费申请网站首选百度
  • 无锡 网站开发重庆奉节网站建设公司推荐