|
本帖最后由 jackz007 于 2025-10-6 22:21 编辑
- def compress(src) :
- r , i = '' , 1
- while i < len(src) :
- k = i - 1
- while i < len(src) and src[i] == src[k] :
- i += 1
- r = r + src[k] + str(i - k) if i - k > 2 else r + src[k] * (i - k)
- i += 1
- return r
- def expand(src) :
- r , i = '' , 1
- while i < len(src) :
- k = i - 1
- while i < len(src) and src[i] . isdigit() :
- i += 1
- r = r + src[k] * int(src[k + 1 : i]) if i > k + 1 else r + src[k]
- i += 1
- return r
- s = input('字符串:')
- if s . strip() :
- x = compress(s . strip())
- z = expand(x)
- print('压缩前:' + s . strip())
- print('压缩后:' + x)
- print('解压后:' + z)
- print('压缩率:%.2f%%' % (100.0 * len(x) / len(z)))
复制代码
【运行实况】:
- D:\[00.Exercise]\[Python]\[2025]\compress.string>python x.py
- 字符串:FFiiiisshCCCCCC
- 压缩前:FFiiiisshCCCCCC
- 压缩后:FFi4sshC6
- 解压后:FFiiiisshCCCCCC
- 压缩率:60.00%
- D:\[00.Exercise]\[Python]\[2025]\compress.string>python x.py
- 字符串:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBcccccccccccccccccccccccccccccccccccccccccc
- 压缩前:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBcccccccccccccccccccccccccccccccccccccccccc
- 压缩后:A53B5c42
- 解压后:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBcccccccccccccccccccccccccccccccccccccccccc
- 压缩率:8.00%
- D:\[00.Exercise]\[Python]\[2025]\compress.string>
复制代码 |
|