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

    575. 字符串解码

    中文English

    给出一个表达式 s,此表达式包括数字,字母以及方括号。在方括号前的数字表示方括号内容的重复次数(括号内的内容可以是字符串或另一个表达式),请将这个表达式展开成一个字符串。

    样例

    样例1

    输入: S = abc3[a]
    输出: "abcaaa"
    

    样例2

    输入: S = 3[2[ad]3[pf]]xyz
    输出: "adadpfpfpfadadpfpfpfadadpfpfpfxyz"
    

    挑战

    你可以不通过递归的方式完成展开吗?

    注意事项

    数字只能出现在“[]”前面。

    输入测试数据 (每行一个参数)如何理解测试数据?

     栈

    class Solution:
        """
        @param s: an expression includes numbers, letters and brackets
        @return: a string
        """
        def expressionExpand(self, ss):
            # write your code here
            stack = []
            #分四种,一个是[,一个是],一个是数字,一个是字符
            
            #如果没有遇]则append到stack里面
            for s in ss:
                if s != ']':
                    stack.append(s)
                    continue
                
                temp_array = []
                if s == ']':
                    #根据最后一个元素判断是否到终点
                    while stack[-1] != '[':
                        temp_array.append(stack.pop())
                    
                    #此时已经到[
                    stack.pop()
                    
                    repeat = ''
                    while stack and stack[-1].isdigit():
                        repeat += stack.pop()
                    
                    temp_array = temp_array[:: -1]*int(repeat[:: -1])
                    stack.extend(temp_array)
            
            return ''.join(stack)
  • 相关阅读:
    浅谈python web三大框架
    Mysql异常
    格式化时间转换
    MySql存储日期为long型,判断时间大小
    Linux下部署项目
    excel
    Tomcate的启动问题
    计算时间差
    地图系的转换
    关于获取本机真实IP
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13291257.html
Copyright © 2011-2022 走看看