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

Leetcode-394 字符串解码(不会,复习)

在这里插入图片描述
在这里插入图片描述
此题不会!!!!!!!!!!!!

题解思路:元组思想:数字[字符串],每次遇到中括号意味着要重复数字次字符串,将数字与字符串进行压栈操作,直到遇到右中括号,开始出栈,出栈到遇到第一个左中括号前一个元素为止。

class Solution {int ptr;public String decodeString(String s) {LinkedList<String> stk = new LinkedList<String>();ptr = 0;while (ptr < s.length()) {char cur = s.charAt(ptr);if (Character.isDigit(cur)) {// 获取一个数字并进栈String digits = getDigits(s);stk.addLast(digits);} else if (Character.isLetter(cur) || cur == '[') {// 获取一个字母并进栈stk.addLast(String.valueOf(s.charAt(ptr++))); } else {++ptr;LinkedList<String> sub = new LinkedList<String>();while (!"[".equals(stk.peekLast())) {sub.addLast(stk.removeLast());}Collections.reverse(sub);// 左括号出栈stk.removeLast();// 此时栈顶为当前 sub 对应的字符串应该出现的次数int repTime = Integer.parseInt(stk.removeLast());StringBuffer t = new StringBuffer();String o = getString(sub);// 构造字符串while (repTime-- > 0) {t.append(o);}// 将构造好的字符串入栈stk.addLast(t.toString());}}return getString(stk);}public String getDigits(String s) {StringBuffer ret = new StringBuffer();while (Character.isDigit(s.charAt(ptr))) {ret.append(s.charAt(ptr++));}return ret.toString();}public String getString(LinkedList<String> v) {StringBuffer ret = new StringBuffer();for (String s : v) {ret.append(s);}return ret.toString();}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/decode-string/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
http://www.lryc.cn/news/225259.html

相关文章:

  • 如何在Linux上搭建本地Docker Registry并实现远程连接
  • assets_common.min.js
  • 前端工程化(vue2)
  • 深度学习(生成式模型)——Classifier Guidance Diffusion
  • Hadoop架构、Hive相关知识点及Hive执行流程
  • P1529 [USACO2.4] 回家 Bessie Come Home 题解
  • Python语法基础(条件语句 循环语句 函数 切片及索引)
  • Debian 9 Stretch APT问题
  • 遍历List集合和Map进行修改和删除报java.util.ConcurrentModificationException错误详解
  • Android从一个APP跳转到另外一个APP
  • 我的创作纪念日——创作者2年
  • 大数据之LibrA数据库系统告警处理(ALM-12032 ommdba用户或密码即将过期)
  • C_3练习题
  • CentOS7 安装Jenkins 2.414.3 详细教程
  • chatglm3-6b记录问答对
  • k8s ingress 代理 mysql 3306端口
  • Informix管理共享内存
  • Webpack 中 Plugin 的作用是什么?常用 plugin 有哪些?
  • CSRF(跨站请求伪造)攻击演示
  • 图解三傻排序 选择排序、冒泡排序、插入排序
  • 【数据结构】树与二叉树(六):二叉树的链式存储
  • 后端Java日常实习生面试(2023年11月10日)
  • 使用iperf3在macOS上进行网络性能测试
  • 09-MySQL主从复制
  • virtualBox虚拟机局域网访问配置
  • IDEA高效编程快捷键
  • nginx实现vue和后端的双机负载
  • ARMday03(寄存器读写、栈、程序状态寄存器、软中断和异常、混合编程)
  • Excel中功能区的存放位置很灵活,可以根据需要隐藏或显示
  • HelloGitHub 社区动态,开启新的篇章!