题目描述
小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S,例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?
思路
- 无压缩直接输出
- 有压缩
2.1 对输入的字符依次入栈
2.11 若字符为】,向前查找【,将中间字符出栈解压缩后重新入栈
直到输入字符全部入栈
str1 = list(input())
result=[]
def unzip(str2):
i = str2.index('|')
n = int(''.join(str2[:i]))
return str2[i+1:]*n
if '[' not in str1:
print(''.join(str1))
else:
while str1:
t = str1.pop(0)
if t is not ']':
result.append(t)
else:
tmp = result[::-1].index('[')
#print(result[:-tmp-1],result[-tmp:])
result=result[:-tmp-1]+unzip(result[-tmp:])
print(''.join(result))
需要注意的点:
1、【】嵌套:只判断】,保证先解压缩里层字符
2、数字为多位:按照|位置截取字符并转成int
3、截取时位数问题