394. 字符串解码 📅 发布时间:2026/7/5 22:21:57 👁️ 浏览次数: 394. 字符串解码中等给定一个经过编码的字符串返回它解码后的字符串。编码规则为:k[encoded_string]表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的输入字符串中没有额外的空格且输入的方括号总是符合格式要求的。此外你可以认为原始数据不包含数字所有的数字只表示重复的次数k例如不会出现像3a或2[4]的输入。测试用例保证输出的长度不会超过105。示例 1输入s 3[a]2[bc] 输出aaabcbc示例 2输入s 3[a2[c]] 输出accaccacc示例 3输入s 2[abc]3[cd]ef 输出abcabccdcdcdef示例 4输入s abc3[cd]xyz 输出abccdcdcdxyz提示1 s.length 30s由小写英文字母、数字和方括号[]组成s保证是一个有效的输入。s中所有整数的取值范围为[1, 300] 核心笔记字符串解码 (Decode String)1. 核心思想 (一句话总结)“遇到字母直接拿遇到数字找配对拆解成 [重复内容] [后缀]。”我们将字符串看作是一个数学表达式。基本情况如果是字母直接保留处理下一个字符。复杂情况如果是数字说明后面跟着一个k[...]的结构。我们需要找到这个结构匹配的右括号将其拆解为三部分次数k。内容t括号里面的部分需递归解码。后缀右括号后面的剩余部分需递归解码。2. 算法流程 (分治法)Base Case字符串为空 - 返回空。Case A: 头部是字母提取首字母 decode(剩下部分)。Case B: 头部是数字找左括号确定数字的结束位置i解析出倍数k。找匹配的右括号 (关键)从左括号开始向右扫维护一个balance计数器。遇[加一遇]减一。当balance 0时说明找到了匹配的](位置j)。递归组合结果 k个decode(内部)decode(后缀)。 代码回忆清单 (带注释版)// 题目LC 394. Decode String class Solution { public String decodeString(String s) { // 1. Base Case if (s.isEmpty()) { return s; } // 2. 情况一当前是字母不需要重复 if (Character.isLetter(s.charAt(0))) { // 贪心策略其实可以连续读完所有字母再一次性递归减少递归深度 // 但这里逐个字符递归逻辑更简单统一 return s.charAt(0) decodeString(s.substring(1)); } // 3. 情况二当前是数字形如 k[...]suffix int i s.indexOf([); // 数字结束左括号开始的位置 // 4. 寻找匹配的右括号 (核心难点) // 不能直接 s.indexOf(])因为可能有嵌套如 3[a2[c]] int balance 1; // 已经遇到了 s[i] 这个左括号 for (int j i 1; ; j) { // 从左括号后面开始找 char c s.charAt(j); if (c [) { balance; } else if (c ]) { balance--; // 5. 找到匹配的闭环 if (balance 0) { // 解析次数 k int k Integer.parseInt(s.substring(0, i)); // 递归解决括号内部 (t) String t decodeString(s.substring(i 1, j)); // 拼接结果k 个 t 递归解决后缀 // 注意StringBuilder.repeat 是 Java 21 新特性 // 如果是老版本 Java可以用 t.repeat(k) (Java 11) 或手动循环 return new StringBuilder() .repeat(t, k) .append(decodeString(s.substring(j 1))) .toString(); } } } } }⚡ 快速复习 CheckList (易错点)[ ]为什么不能直接找第一个]输入可能是3[a2[c]]。第一个]是c后面的那个。如果直接截取会把3[和2[c]错误地配对。必须使用balance计数器来处理嵌套。[ ]时间复杂度这种递归写法的复杂度较高。因为s.substring在 Java 中是 $O(N)$ 的拷贝数组且每一层递归都可能创建新的子串。虽然逻辑清晰但在字符串非常长且嵌套深的情况下性能不如“双栈法”(StackInteger count, StackString res)。[ ]API 版本注意new StringBuilder().repeat(t, k)是JDK 21的 API。如果是 JDK 11可以用sb.append(t.repeat(k))。如果是 JDK 8需要手动写个for循环 appendk次。️ 脑图模型 (拆信封)输入3[a2[c]]b第一层拆解数字3。信封内容a2[c](待解码)。后缀b(待解码)。任务3 * decode(a2[c]) decode(b)第二层拆解 (a2[c])首字符a- 拿出a剩下2[c]。任务a decode(2[c])第三层拆解 (2[c])数字2。信封内容c。后缀 (空)。任务2 * c -cc回溯组装L2 返回a ccaccL1 返回3 * acc baccaccaccb
RK809调试 一、内核配置(让内核支持 RK809 音频)1. 启用 simple-audio-card 通用音频驱动文件位置:kernel/arch/arm64/configs/lubancat2_defconfig(或你的板级 defconfig)修改内容:CONFIG_SND_SIMPLE_CARD_UTILSy CO… 2026/7/3 5:43:18
【毕业设计】SpringBoot+Vue+MySQL web铁路订票管理系统平台源码+数据库+论文+部署文档 摘要 随着我国铁路交通网络的快速发展和旅客出行需求的日益增长,传统的人工售票和电话订票方式已无法满足现代化出行的高效性和便捷性需求。铁路订票管理系统的数字化升级成为解决这一问题的关键途径。该系统旨在通过信息化手段优化票务管理流程,提升旅… 2026/5/17 7:54:43
《全球算力主权宪章》Global Charter of Computational Sovereignty (GCCS) 《全球算力主权宪章》(GCCS v1.0):确立智能时代第五战略资源的文明边界摘要: 《全球算力主权宪章》(GCCS v1.0)基于贾子认知体系,首次将算力界定为继土地、资本、能源、数据之后的第五战略基础资… 2026/5/17 7:54:41
蒙特卡洛方法在SIR模型中的3个关键应用:从参数估计到干预策略评估 蒙特卡洛方法在SIR模型中的3个关键应用:从参数估计到干预策略评估引言:当概率遇上流行病学想象你是一位公共卫生决策者,面对一种新型传染病的爆发,需要回答三个关键问题:病毒传播速度有多不确定?如果实施社… 2026/7/5 22:20:51
Three.js 中国旗帜教程 中国旗帜 China Flag ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 RawShaderMaterial 手写… 2026/7/5 22:18:51
App渠道追踪实战指南:iOS、Android与鸿蒙多平台实现与避坑 1. 项目概述:为什么渠道追踪是App增长的“生命线”在移动互联网的下半场,流量红利见顶,每一分市场预算都变得弥足珍贵。作为开发者或市场运营,你是否曾面临这样的灵魂拷问:我们投放在抖音、小红书、知乎、应用商店的广… 2026/7/5 22:18:51
基于AVOA优化的非完全beta函数图像增强方法 1. 项目概述在计算机视觉和图像处理领域,图像增强技术一直扮演着至关重要的角色。传统的图像增强方法如直方图均衡化、伽马校正等虽然简单易用,但在处理复杂场景时往往显得力不从心。特别是在面对低对比度、高噪声或光照不均的图像时,这些方法… 2026/7/5 22:16:50
AI 安全护栏:Prompt 规则不是最后一道防线 AI 安全护栏:Prompt 规则不是最后一道防线 一、只靠 Prompt 很脆 AI 应用上线后,安全问题会变得非常现实:越权查询、敏感信息泄露、工具误调用、提示词注入、恶意内容生成。很多团队会在系统提示词里写一堆规则,希望模型自觉遵守—… 2026/7/5 22:16:50
REPENTOGON深度配置指南:以撒结合扩展器的模块化实施与验证框架 REPENTOGON深度配置指南:以撒结合扩展器的模块化实施与验证框架 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON REPENTOGON作为《以撒的结合:忏悔》… 2026/7/5 22:16:50
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36