程序以Python扩展表示为n(t)格式的字符串

假设我们有一个字符串s,它正在编码一个更长的字符串。s表示为的串联n(t),n(t)表示t的串联n次,并且t是常规字符串或它是递归的另一个编码字符串。我们必须找到的解码版本。

因此,如果输入类似于s =“ 3(pi)2(3(am))0(f)1(u)”,则输出将为“ pipipiamamamamamamu”

在线示例

让我们看下面的实现以更好地理解-

class Solution:
   def solve(self, s):
      i = 0
      def parse():
         nonlocal i
         ans = []
         while i < len(s) and s[i] != ")":
            if s[i].isdigit():
               d = 0
               while s[i].isdigit():
                  d = 10 * d + int(s[i])
                  i += 1
               i += 1
               segment = parse()
               i += 1
               ans.extend(segment for _ in range(d))
            else:
               ans.append(s[i])
               i += 1
         return "".join(ans)
         return parse()
ob = Solution()
s = "3(pi)2(3(am))0(f)1(u)"
print(ob.solve(s))

输入值

"3(pi)2(3(am))0(f)1(u)"
输出结果
pipipiamamamamamamu

猜你喜欢