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)

  • 相关阅读:
    java selenium (十) 操作浏览器
    java selenium (九) 常见web UI 元素操作 及API使用
    java selenium (六) XPath 定位
    正则表达式
    日志模板
    软件开发规范
    TCP协议的粘包现象和解决方法
    验证用户的合法性
    PythonDay16
    PythonDay15
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/12720981.html
Copyright © 2011-2022 走看看