您的位置:首页 > 健康 > 美食 > 邢台123网站_企业邮箱申请哪个_广州seo网站营销_百度在线翻译

邢台123网站_企业邮箱申请哪个_广州seo网站营销_百度在线翻译

2025/4/21 23:03:31 来源:https://blog.csdn.net/TTz012/article/details/142851291  浏览:    关键词:邢台123网站_企业邮箱申请哪个_广州seo网站营销_百度在线翻译
邢台123网站_企业邮箱申请哪个_广州seo网站营销_百度在线翻译

题目描述
有一种简易压缩算法:针对全部由小写英文字母组成的字符串,将其中连续超过两个相同字母的部分压缩为连续个数加该字母,其他部分保持原样不变。

例如:字符串“aaabbccccd”经过压缩成为字符串“3abb4cd”。

请您编写解压函数,根据输入的字符串,判断其是否为合法压缩过的字符串,

若输入合法则输出解压缩后的字符串,否则输出字符串“!error”来报告错误。

输入描述
输入一行,为一个ASCII字符串,长度不会超过100字符,用例保证输出的字符串长度也不会超过100字符。

输出描述
若判断输入为合法的经过压缩后的字符串,则输出压缩前的字符串;

若输入不合法,则输出字符串“​**!error**​”。

用例1
输入
4dff
输出
ddddff
说明
4d扩展为dddd,故解压后的字符串为ddddff。

用例2
输入
2dff
输出
!error
说明
两个d不需要压缩,故输入不合法。

用例3
输入
4d@A
输出
!error
说明
全部由小写英文字母组成的字符串压缩后不会出现特殊字符@和大写字母A,故输入不合法。

"""
在这写一下自己的想法,压缩后的字符串需要解压
在字符串中呢,可能会出现非法字符,判断报告错误不难
需要注意的是,字符串中的数字可能不止有个位数
此外,如果出现5ddd这种压缩字符串的话,按理来说业是不合理的
因为它解压后为ddddddd,解压后再次压缩则为7d
"""
def judge(c):if '0'<=c<='9':return 1elif 'a'<=c<='z':return 2else:return 3
def expend(S):result=[]i=0n=len(S)while i <n:if judge(S[i])==3:return '!error'elif judge(S[i])==1:count_str=''while i<n and judge(S[i])==1: #需要获得完整的数字count_str+=S[i]i+=1if i<n and judge(S[i])==2:count_str = int(count_str)if count_str<3:return '!error'else:result.append((count_str-1)*S[i])else:result.append(S[i])i+=1return ''.join(result)def zip(S):result = []n = len(S)count = 1for i in range(1,n):if S[i]==S[i-1]:count+=1else:if count==2:result.append(S[i-1])if count>2:result.append(str(count))result.append(S[i-1])count = 1#最后一组if count == 2:result.append(S[i - 1])if count>2:result.append(str(count))result.append(S[-1])return ''.join(result)if __name__ == '__main__':S = input()Ex_S=expend(S)if Ex_S!='!error' and len(Ex_S)!=0:#如果输入的S是纯数字的话,也是错误的Zip_s = zip(Ex_S)if Zip_s==S:print(Ex_S)else:print('!error')else:print('!error')

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com