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

【LeetCode】394、字符串解码

【LeetCode】394、字符串解码

文章目录

  • 一、递归: 嵌套类问题
    • 1.1 递归: 嵌套类问题
  • 二、多语言解法

一、递归: 嵌套类问题

1.1 递归: 嵌套类问题

// go
func decodeString(s string) string {
    // 如果遇到 嵌套括号的情况, 则递归
    // 可能连续多位数字, 则 通过 cur = cur * 10 + int(c - '0') 实现
    
    where := 0 // 全局变量, 记录嵌套过程已执行到的位置, 嵌套过程结束后从 where + 1 继续
    var f func(i int) string
    f = func(i int) string { // 处理 [ 内部的结果
        path := "" // 当前函数的处理结果
        cnt := 0 // 倍数, 如 3[a] 中的 3
        for i < len(s) && s[i] != ']' { // 字符串未遍历完 or 嵌套未结束
            c := s[i]
            if (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') {
                path += string(c)
                i++
            } else if c >= '0' && c <= '9' {
                cnt = cnt * 10 + int(c - '0')
                i++
            } else { // 即 c == '[', 需开启嵌套
                path += strings.Repeat(f(i+1), cnt)
                cnt = 0 // 清理现场
                i = where + 1 // 上级继续从 嵌套结束的位置 之后继续, 即 where + 1
            }
        }
        where = i // 更新全局变量, 从而让嵌套的上级从 where + 1 处继续
        return path
    }
    return f(0)
}

参考左神: 嵌套类问题 递归思路

二、多语言解法

C p p / G o / P y t h o n / R u s t / J s / T s Cpp/Go/Python/Rust/Js/Ts Cpp/Go/Python/Rust/Js/Ts

// cpp
// go 同上
# python
// rust
// js
// ts

http://www.kler.cn/a/452971.html

相关文章:

  • python怎么看矩阵维数
  • 低代码配置式组态软件-BY组态
  • 深入理解 MySQL 索引
  • 数据流动背后的“暗流涌动”,企业如何借助多源威胁检测响应高效捕捉安全威胁?
  • IDEA无法打开插件市场的解决
  • 微信小程序 不同角色进入不同页面、呈现不同底部导航栏
  • 嵌入式学习-QT-Day04
  • 鸿蒙主体分割/剔除背景
  • 任务三数据库加固
  • 【每日学点鸿蒙知识】数据迁移、大量图片存放、原生自定义键盘调用、APP包安装到测试机、photoPicker顶部高度
  • (八)循环神经网络_门控循环单元GRU
  • 从汽车企业案例看仓网规划的关键步骤(视频版)
  • 项目文档-代码检查报告
  • 无人机巡检大疆智图测绘技术详解
  • ubuntu 轻松安装Conda
  • 【DSVW】攻防实战全记录
  • 2024年度个人总结
  • 题海拾贝:力扣 88.合并两个有序数组
  • Python3 爬虫 开发Scrapy下载器中间件
  • 开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布