(文本压缩)数据压缩算法的目的是减少数据的大小,以便更快地传输和存储。我们经常会用到的zip 、rar 等压缩工具,就是利用数据压缩算法把多个文件或者文件夹压缩成一个更小的文件;我们的网 页在传输时,通常也使用了 压缩。有些时候 例如传输图像、视频时 ,我们会允许在压缩 过程中损失一些精度,以实现更好的压缩比。
在这个问题里,你需要自己设计一个英文文本的无损压缩和解压缩算法。你的程序需要同时实 现压缩器和解压缩器两部分功能:
压缩器输入一个仅由小写字母组成的字符串,输出一个压缩后的字符串。压缩后的字符 串允许使用大写字母、小写字母和数字,但不允许使用其他字符。
解压缩器输入一个压缩后的字符串,还原出小写字母的字符串。
注意,在这个问题中,所有给压缩器的输入都来自人工智能GPT-3.5-turbo生成的英文文本保 留字母(并转换为小写 )后得到的,也就是说,你可以假设除了偶尔的例外,字符串是由英文单 词拼接而成的。这个性质是解决问题的关键 随机序列的压缩比 有规律 序列的压缩要困难得多。
输入格式
输入数据第一行为一个大写英文单词,代表压缩 解压缩的任务类型。 “COPRESS”代表压缩; "DECOMPRESS"代表解压缩。
第二行一个字符串,是压缩 解压缩任务对应的文本。对于压缩任务,是一个仅包含小写字母 的字符串;对于解压缩任务,字符串总是来自你程序之前 COPRESS压缩的结果。
输出格式
输出一行一个字符串。对于压缩任务,输出一行为压缩后的文本;对于解压缩任务,输出一行为解压缩后的文本。
数据规模
对于100% 的数据,输入字符串的长度 n 满足 30, 000 ≤ n ≤ 40, 000。
本题的评测机会两次调用你的程序:
第一次调用你的程序执行压缩任务,例如输入
COMPRESS aaaaaaaabbbbbbbbbb
假设本次调用,你的程序输出了 a8b10 作为压缩后的文本。这个输出会被评测系统记 住。
第二次,调用你的程序执行解压缩任务。针对刚才的例子,我们会为你的程序输入
DECOMPRESS a8b10
如果你的程序解压缩输出 aaaaaaaabbbbbbbbbb 即正确解压缩得到原字符串 ,则被判定 为 还原正确 。