11 6月 2020

算法题-解多重压缩字符串

题目:形如[2AE]表示AEAE,[2[2EB]A]表示EBEBAEBEBA…这种压缩规则为数字表示压缩次数范围1-99,压缩内容都是大写字母。现在给一个压缩字符串为输入,求解压缩的原文。

思路:通过正则表达式匹配到”[数字字母]”这种严格格式,每次匹配完就立即展开,直到再也没有[号或者]号出现。

import re
def Solution(S:str)->str:
  while '[' in S:
      for code in re.findall('\[[0-9]+[A-Z]+\]', S):
          info = re.findall('\[([0-9]+)([A-Z]+)\]', code)[0]
          S = S.replace(code, info[1]*int(info[0]))
  return S