题目描述
给定一段”密文”字符串s
,其中字符都是经过”密码本”映射的,现需要将”密文”解密并且输出。
映射的规则 :"a-i"
分别用"1-9"
表示,"j-z"
分别用"10*-26*"
表示
约束:映射始终唯一
输入描述
“密文”字符串
输出描述
明文字符串
补充说明
翻译后的文本的长度在100
以内
# 构建数字和字母之间的映射关系
dic = {str(i): chr(ord("a") + i - 1) for i in range(1, 27)}
# 输入字符串
s = input()
# 构建一个栈
stack = list()
# 遍历s中所有字符
for ch in s:
# 如果是*号,说明*前面的两个数字要合并为一个两位数一起考虑
if ch == "*":
digit_1 = stack.pop()
digit_10 = stack.pop()
# 将合并后的两位数重新压回栈顶
stack.append(digit_10 + digit_1)
# 如果不是*号,而是数字,则直接入栈
else:
stack.append(ch)
print("".join(dic[num_str] for num_str in stack))