Python一种字符串压缩表示的解压
def decompress_q(s):
i = 0
n = len(s)
decompressed = []
while i < n:
if s[i].isdigit():
# 检查数字是否合法(至少2,且后面必须跟字母)
if i + 1 >= n or not s[i+1].islower():
return "Q | error"
num = int(s[i])
if num < 2:
return "Q | error"
char = s[i+1]
decompressed.append(char * num)
i += 2
elif s[i].islower():
# 直接添加字母
decompressed.append(s[i])
i += 1
else:
# 非法字符(如大写字母、符号等)
return "Q | error"
return ''.join(decompressed)
# 测试用例
input_str = input().strip()
result = decompress_q(input_str)
print(result)
解决思路
- 合法性检查:
遍历字符串,检查是否有非法字符(如非小写字母和非数字)。
数字必须大于等于2,且后面必须紧跟一个小写字母。
不能有连续的数字(如12a是非法的,因为12会被视为一个数字12,但题目可能隐含数字为1位数)。
- 解压操作:
逐个字符处理,遇到数字时,读取数字和紧随的字母,扩展为连续字母。
其他字符直接保留。