首页 > 其他分享 >394. 字符串解码

394. 字符串解码

时间:2024-09-10 21:02:53浏览次数:1  
标签:elif ch 解码 answer num str 394 字符串

题目链接 394. 字符串解码
思路 字符串模拟;出现相同子问题,可以使用递归或者解决
题解链接 字符串解码(辅助栈法 / 递归法,清晰图解)
关键点 栈:需要存储(重复次数,当前字符串);递归:需要范围 内嵌字符串及结束位置
时间复杂度 \(O(n)\)
空间复杂度 \(O(n)\)

代码实现(栈):

class Solution:
    def decodeString(self, s: str) -> str:
        stk = []
        num = 0
        answer = ""
        for ch in s:
            if ch.isdigit():
                num = num * 10 + int(ch)
            elif ch == "[":
                stk.append((answer, num))
                answer, num = "", 0
            elif ch == "]":
                prev_str, cur_times = stk.pop()
                answer = prev_str + cur_times * answer
            else:
                answer += ch
        return answer

代码实现(递归):

class Solution:
    def decodeString(self, s: str) -> str:
        def decode(i):
            answer, n = "", 0
            while i < len(s):
                if s[i].isdigit():
                    n = n * 10 + int(s[i])
                elif s[i] == '[':
                    i, nested = decode(i+1)
                    answer += n * nested
                    n = 0
                elif s[i] == ']':
                    return i, answer
                else:
                    answer += s[i]
                i += 1
            return answer
        return decode(0)

标签:elif,ch,解码,answer,num,str,394,字符串
From: https://www.cnblogs.com/WrRan/p/18407198

相关文章

  • 因为不懂推测解码,被面试官鄙视了...
    我是丁师兄,专注于智能驾驶方向大模型落地,公众号:丁师兄大模型。大模型1v1学习,已帮助多名同学上岸国内外大厂前两天有个学员抱怨后天就要面试了,心里难免紧张。尽管他做了很多准备,但他还是担心面试官会问到像“大模型中的推测解码”这种复杂的技术问题。为了不在关键时刻掉链......
  • leetcode day06 动态规划之解码方法I和II
    91.解码方法该题类似于爬楼梯方法一:动态规划对于给定的字符串s,设它的长度为n,其中的字符从左到右依次为s[1],s[2],⋯,s[n]。我们可以使用动态规划的方法计算出字符串s的解码方法数。具体地,设f i 表示字符串s的前i个字符s[1..i]的解码方法数。在进行状态转移......
  • LeetCode之数组/字符串
    88.合并两个有序数组classSolution{publicvoidmerge(int[]nums1,intm,int[]nums2,intn){//这个循环将nums2中的元素逐个复制到nums1中从索引m开始的位置for(inti=0;i<n;i++){nums1[i+m]=nums2[i];......
  • python-字符串
    1.在python中,字符串是被定义为在引号(或双引号)之间的一组连续的字符。这个字符可以是键盘上所有可见字符,也可以是不可见的“回车符” “制表符”等。字符串的操作方法很多,这里只选出最典型的几种。(1)字符串大小写转换》S.lower():字母大写转换成小写。》S.upper():字母小写转......
  • 【Py/Java/C++三种语言OD独家2024E卷真题】20天拿下华为OD笔试之【回溯】2024E-字符串
    可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录相关推荐阅读题目描述与示例题目描述输入描述输出描述示例一输入输出说明示例二输入输出说明解题思路代码pythonjavacpp时空复杂度华为OD算法/大厂面......
  • 字符串类
    String类的特性String类是一个final类,不能被继承String类底层是一个final修饰的字符数组,表示不可变的字符序列(finalcharvalue[])String的不可变性:当String值改变时,会在常量池中创建新的字符串字符串-创建字面量方式创建Strings1="abc";//s1存储的是常量池中"abc......
  • 多媒体应用设计师备考考点讲解(三):多媒体内容的编码与解码技术
    #多媒体应用设计师备考考点讲解(三):多媒体内容的编码与解码技术引言在现代多媒体应用中,编码与解码技术是至关重要的环节。无论是视频、音频还是图像,都需要通过编码技术将其转换为适合存储和传输的格式,而在接收端则需要通过解码技术将其还原为原始内容。本文将深入探讨多媒体内容的编......
  • 1170. 比较字符串最小字母出现频次
    题目链接1170.比较字符串最小字母出现频次思路题意不易理解;排序+二分(upper_bound)题解链接Python简洁解法关键点预先处理words时间复杂度\(O((n+m)p)\)空间复杂度\(O(1)\)代码实现:classSolution:defnumSmallerByFrequency(self,queries:L......
  • 每日OJ_牛客_单词倒排(字符串模拟)
    目录牛客_单词倒排(字符串模拟)解析代码牛客_单词倒排(字符串模拟)单词倒排__牛客网时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64M题目描述:对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词......
  • 代码随想录day8-字符串2
    题目1151.反转字符串中的单词*给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾......