Description给定一个编码字符串,返回它的解码字符串。编码规则为:k[encoded_string],其中方括号内的encoded_string正好重复k次。请注意,k保证为正整数。您可能会假设输入字符串始终有效;没有额外的空格,方括号格式正确等。此外,您可以假设原始数据不包含任何数字,并且数字仅用于那些重复数字k。比如不会有3a或者2[4]这样的输入。例子:s="3[a]2[bc]",return"aaabcbc".s="3[a2[c]]",return"accaccacc".s="2[abc]3[cd]ef",return"abcabccdcdcdef".s="leetcode",return"leetcode".描述给定一个编码字符串,返回解码后的字符串。编码规则为: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”。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。思路是用一个栈,一个作为数字栈存放数字,一个作为字符栈存放字符;如果遇到数字,则提取该数字;如果遇到'[',将数字压入栈,'['也压入栈;如果遇到']',则将栈中的字符压出栈,直到遇到'[',将压出的所有字符乘以数栈中的最后一个字符,再压回栈中。#-*-编码:utf-8-*-#@作者:何锐#@创建日期:2019-08-2509:19:03#@最后修改者:何锐#@最后修改时间:2019-08-2510:17:59class解决方案:defdecodeString(self,s:str)->str:num,chr_stack,num_stack=0,[],[]forcharins:ifchar.isdigit():num=num*10+int(char)elifchar=='[':num_stack.append(num)chr_stack.append(""")num=0elifchar==']':tmp=[]而chr_stack和chr_stack[-1]!='[':tmp.append(chr_stack.pop())chr_stack.pop()chr_stack.extend(reversed(tmp*num_stack.pop()))else:chr_stack.append(char)返回“”。join(chr_stack)源代码文件在这里。?本文为原创文章,欢迎转载,转载须保留文章出处、作者信息及本声明。?
