链接:https://ac.nowcoder.com/acm/problem/21805
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
给你两个长度相同的字符串a,b,现在已知b是a编码之后的结果
比如a = “CAT”, b = “DOG”, 那么D其实是C,O其实是A,G其实是T
现在给你一个字符串c,如果c能够被解码出来,输出c解码后的字符串,如果不能输出@
输入描述:
输入三行,每行一个字符串,长度在50以内
输出描述:
输出一个字符串
这里需要注意的是如果给出了25个字母,那么剩下的这个字母的解码情况是可以推导出来的。
a = input()
b = input()
c = input()l = []
n = len(a)
for i in range(n):l.append(b[i])
res = ""
d = dict(zip(b,a))
all = set('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
m = len(set(b))# 如果给出了25个字母,那么剩下的这个可以推导出来
if m==25:x = all - set(a) # 利用集合的性质进行推导y = all - set(b)x = ''.join(x) # 字典转成字符串 y = ''.join(y)d[y] = x # 将推导出来的这个键值对添加进字典
for i in range(len(c)):if c[i] not in l and m!=25:print("@")breakelse:res += d[c[i]]
else:print(res)