字符串压缩算法 python,python字符串压缩为数字和字符
078字符串压缩和解压缩(20分)
有许多压缩文本的方法。这里只考虑最简单的一种:由同一个字符组成的连续段,用这个字符和该段包含的字符数来表示。例如,ccccc用5c表示。如果字符不重复,则按原样输出。比如aba压缩后还是aba。
解压方式是反过来的,像5c这样的表示还原成ccccc。
本主题要求您根据压缩或解压缩的要求处理给定的字符串。这里我们简单假设原字符串是一个完全由英文字母和空格组成的非空字符串。
输入格式:
输入第一行以给出一个字符。如果是C,说明后面的字符串需要压缩;如果是D,说明后面的字符串需要解压。第二行给出需要压缩或解压缩的不超过1000个字符的字符串,以回车结束。确保标题字符的重复次数在整数范围内,输出文件小于1MB。
输出格式:
根据需要压缩或解压缩字符串,并在一行中输出结果。
输入样本1:
C
这是一个测试
输出样本1:
5T2h4is i5s a3 te4st CA3a as
输入样本2:
D
5T2h4is i5s a3 te4st CA3a as10Z
输出样本2:
这是一个测试
英亩
分析:有C或d两种分析模式。
对于C,cnt用于记录重复字母的数量。每遇到一个不同的字符,在结果字符串中进行拼接,加入cnt个重复的字母。注意遍历完之后,末尾的字符还没有加到结果中,需要重新拼接~
对于D,重点是判断遍历中的字符是否为数字。如果有连续的数字,就需要组合起来~这一步完成后,下一步就简单了,用字符串的乘法运算还原然后加上结果字符串即可。
comd=input()
ls=输入()
cnt=0
结果=
标签=
如果comd==C :
tag=ls[0]
cnt=1
对于ls[1:]中的s:
如果s==tag:
cnt=1
否则:
如果cnt 1:
结果=字符串(计数)标签
否则:
结果=标签
标签=s
cnt=1
如果cnt 1: #在循环结束时输出
结果=字符串(计数)标签
否则:
结果=标签
elif comd==D :
对于ls中的s:
如果。Isdigit (): #先判断是否是每个周期的数字,如果是,就组合。
标签=s
继续
否则:
如果标签:
result=int(tag) * s
否则:
结果=s
标签=
打印(结果)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。