为什么不同的代码在一个测试点上输出一样的结果,一个对一个错。 测试点是:QWERTYUIOPLKJHGFDSAZXCVBNM QWERTYUIOPLKJHGFDSAZXCVBNN HIJACK
代码一是对的:
d = {}
a = list(input().strip())
b = list(input().strip())
c = list(input().strip())
def code(a,b):
for i in range(len(a)):
if b[i] in d.values() and a[i] != [key for key,value in d.items() if value == b[i]][0]:
return 'Failed'
if a[i] not in d:
d[a[i]] = b[i]
else:
if d[a[i]] != b[i]:
return 'Failed'
else:
continue
if len(d) != 26:
return 'Failed'
if code(a,b) == 'Failed':
print('Failed')
else:
for j in range(len(c)):
c[j] = d[c[j]]
print(''.join(c))
代码二是错的:
d1 = {}
d2 = {}
a = list(input().strip())
b = list(input().strip())
c = list(input().strip())
def code(a,b):
for i in range(len(a)):
d1[a[i]],d2[b[i]] = b[i],a[i]
if len(d1) != 26 or len(d2) != 26:
#if len(d1) != 26 or len(d1) != len(d2):等价写法
return 'Failed'
if code(a,b) == 'Failed':
print('Failed')
else:
for j in range(len(c)):
c[j] = d1[c[j]]
print(''.join(c))
在测试点3两个输出的都是Failed,结果第一个对第二个错?玄学事件。