Leetcode394 字符串解码

Leetcode394 字符串解码_第1张图片

思路:类似于入栈出栈的操作,分层保存数字和字符串,然后逐层相乘合并,通过判断当前字符和上一个字符类型来确定数字是否结束

class Solution:
    def decodeString(self, s: str) -> str:
        current_str = [""]
        current_num=[]
        last_char=""
        for each_char in s:
            if each_char.isalpha():
                current_str[-1] += each_char
            elif each_char.isnumeric():
                if not last_char.isnumeric():
                    current_num.append(0)
                current_num[-1] = current_num[-1] * 10 + int(each_char)
            elif each_char == '[':
                current_str.append("")
            elif each_char == ']':
                current_str[-2]+= current_str[-1] * current_num[-1]
                current_str.pop(-1)
                current_num.pop(-1)
            last_char=each_char
        while current_num:
              print(current_str, current_num)
              current_str[-2]+=current_str[-1]*current_num[-1]
              current_str.pop(-1)
              current_num.pop(-1)
        print("current",current_str)
        return current_str[-1]

你可能感兴趣的:(Leetcode中等题,python,leetcode)