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

从括号匹配到字符串解码:递归思想的巧妙应用

在这里插入图片描述

解题思路

这是一个典型的递归问题。关键在于处理嵌套的括号结构:

  1. 遇到字母:直接加入结果
  2. 遇到数字:累积重复次数
  3. 遇到 [:递归处理括号内的子串
  4. 遇到 ]:当前层递归结束,返回结果

使用全局变量 where 记录当前处理位置,让上层递归知道从哪继续处理。

完整代码实现

public class Solution {// 全局变量,记录当前处理到的位置public static int where;public static String decodeString(String str) {where = 0;return f(str.toCharArray(), 0);}public static String f(char[] s, int i) {StringBuilder path = new StringBuilder();int cnt = 0;  // 记录重复次数// 遍历字符串,直到遇到 ']' 或结束while (i < s.length && s[i] != ']') {if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')) {// 情况1:遇到字母,直接追加path.append(s[i++]);} else if (s[i] >= '0' && s[i] <= '9') {// 情况2:遇到数字,累积计算重复次数(可能是多位数)cnt = cnt * 10 + s[i++] - '0';} else {// 情况3:遇到 '[',需要递归处理括号内的内容// 递归调用 f,从 i+1 位置开始(跳过当前的'[')String subResult = f(s, i + 1);// 将递归结果重复 cnt 次,追加到当前结果path.append(get(cnt, subResult));// 更新 i 到递归结束的位置(跳过对应的']')i = where + 1;// 重置重复次数cnt = 0;}}// 更新全局位置变量,记录当前处理到哪里// 如果遇到']',where指向']';否则指向字符串末尾where = i;return path.toString();}public static String get(int cnt, String str) {StringBuilder builder = new StringBuilder();for (int i = 0; i < cnt; i++) {builder.append(str);}return builder.toString();}}

如果觉得有帮助,欢迎点赞、关注、转发~

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

相关文章:

  • 第7章 Node框架实战篇 - Express 中间件与RESTful API 接口规范
  • 编译器用什么语言开发 | 深入探讨编译器开发的语言选择及其影响
  • 实战内网PTH上线域控
  • 基于YOLOv5-AUX的棕熊目标检测与识别系统实现
  • 东北网站建设国网典型设计最新版
  • 白酒网站设计广告设计与制作教程
  • 建设文明网站包括个人网站学生作业
  • 面对AI的思考,如何区分什么能力是人最根本的能力?
  • 当“能者”不再“多劳”:于倦怠深处,寻一方从容
  • 分布式系统测试包含子系统的系统测试,数据一致性测试,并发测试
  • less 工具 OpenHarmony PC适配实践
  • 人工智能之数据分析 numpy:第三章 Ndarray 对象和数组创建
  • Claude Code API Gateway 配置指南
  • 网站怎么做404 301深圳网站论坛建设
  • 网站后台m整套网站设计
  • claude code 食用指南
  • 专题1:双指针
  • 基于Vue的鲜花销售系统33n62(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
  • sdc 编写笔记
  • Rabbit MQ:概述
  • 建站之星管理中心注册海外公司
  • 【HarmonyOS】ArkWeb——从入门到入土
  • 微网站 微信网站优化服务是什么意思
  • VS Code 隐藏顶部标题栏中间的文字
  • 珠海网站哪家好如何给网站流量来源做标记通过在网址后边加问号?
  • Rust入门
  • Rust入门 之一
  • “伪”局域网
  • C语言编译软件Mac | 在Mac上选择最合适的C语言编译工具
  • 怎么样建设一个网上教学网站网页版微信二维码不能直接识别