首页 > 编程语言 >压缩算法

压缩算法

时间:2023-08-12 19:33:19浏览次数:36  
标签:最里层 找到 ss 字符串 压缩算法 find

思路

因为这个字符串可以被多层压缩,所以我们要找到最里层的中括号。刚开始的思路是利用栈,从前往后找,遇到'['的时候,将元素入栈,遇到']'的时候,让元素出栈,计算出解压后的字符串,然后继续往后遍历,一直到栈为空。但是编码的过程中发现这种办法太过复杂。
后来发现,只要从后往前遍历,找到的第一个'['就是最里层的,然后从这个'['的位置往后找,就能找到这个'['对应的']',然后我们吧这段内容替换为解压后的字符串,接着往前查找。一直到找不到'['为止。

代码

s = input()
i = len(s)

while True:
    i = s.rfind("[", 0, i)
    if i < 0:
        break
    j = s.find("|", i + 1)
    k = s.find("]", j + 1)

    # 找到数字
    n = int(s[i + 1:j])
    # 找到字串
    ss = s[j + 1:k]
    # 拼接
    s = s[:i] + n * ss + s[k + 1:]

print(s)

标签:最里层,找到,ss,字符串,压缩算法,find
From: https://www.cnblogs.com/mengzhuo/p/17625325.html

相关文章