题目描述:
有一种简易压缩算法:针对全部为小写英文字母组成的字符串, 将其中连续超过两个相同字母的部分压缩为连续个数加该字母 其他部分保持原样不变. 例如字符串aaabbccccd 经过压缩变成字符串 3abb4cd
请您编写解压函数,根据输入的字符串,判断其是否为合法压缩过的字符串。
若输入合法则输出解压缩后的字符串,否则输出字符串”!error”来报告错误。
输入描述:
输入一行,为一个ASCII字符串
长度不超过100字符
用例保证输出的字符串长度也不会超过100字符
输出描述:
若判断输入为合法的经过压缩后的字符串
则输出压缩前的字符串
若输入不合法 则输出字符串”!error”
示例
1.输入:
4dff
输出:ddddff
说明:
4d扩展为4个d ,故解压后的字符串为ddddff
2.输入:
2dff
输出:!error
说明:
2个d不需要压缩 故输入不合法
输入:
4d@A
输出:!error
说明:
全部由小写英文字母组成的字符串,压缩后不会出现特殊字符@和大写字母A 故输入不合法
#解题想法:特殊情况考虑,1.2dff;2.4d@A,3.4d3ff
while 1:
try:
s= "4d3ff"
res=""
l=[]
if len(s)>2:
j=0
while j+2<len(s):
print(j)
if s[j].isnumeric() and s[j+1].isalpha() and s[j+1]==s[j+2]:
l.append("!error")
print("!error")
j=len(s)
else:
j+=1
if "2" in s or not s.isalnum():
l.append("!error")
print("!error")
else:
for i in range(len(s)):
if s[i].isdigit():
res+=s[i+1]*(int(s[i])-1)
else:
res+=s[i]
if l.count("!error")>0:
print("!error")
else:
print(res)
break
except Exception as e:
print(e)
break
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
暂无评论内容