zoukankan      html  css  js  c++  java
  • 394. 字符串解码

    给定一个经过编码的字符串,返回它解码后的字符串。

    编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。

    此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

    示例:

    s = "3[a]2[bc]", 返回 "aaabcbc".
    s = "3[a2[c]]", 返回 "accaccacc".
    s = "2[abc]3[cd]ef", 返回 "abcabccdcdcdef".

    解法一:辅助栈法

    class Solution:
        def decodeString(self, s: str) -> str:
            stack, res, multi = [], "", 0
            for c in s:
                if c == '[':
                    stack.append([multi, res])
                    res, multi = "", 0
                elif c == ']':
                    cur_multi, last_res = stack.pop()
                    res = last_res + cur_multi * res
                elif '0' <= c <= '9':
                    multi = multi * 10 + int(c)            
                else:
                    res += c
            return res
    

    解法二:递归法

    class Solution:
        def decodeString(self, s: str) -> str:
            def dfs(s, i):
                res, multi = "", 0
                while i < len(s):
                    if '0' <= s[i] <= '9':
                        multi = multi * 10 + int(s[i])
                    elif s[i] == '[':
                        i, tmp = dfs(s, i + 1)
                        res += multi * tmp
                        multi = 0
                    elif s[i] == ']':
                        return i, res
                    else:
                        res += s[i]
                    i += 1
                return res
            return dfs(s,0)
    


    作者:jyd
    链接:https://leetcode-cn.com/problems/decode-string/solution/decode-string-fu-zhu-zhan-fa-di-gui-fa-by-jyd/
    来源:力扣(LeetCode)

  • 相关阅读:
    交叉验证概述
    【Python那些事儿之十】range()和xrange()
    Numpy基础笔记
    matplotlib中使用imshow绘制二维图
    Django+Django-Celery+Celery的整合实战
    Nginx+uWSGI+Django部署web服务器
    uwsgi
    uwsgi 神器问题
    disagrees about version
    协议基础:SMTP:使用Telnet学习SMTP协议
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/12720981.html
Copyright © 2011-2022 走看看