deff(s1, s2):
d ={}for a, b inzip(s1, s2):if(a in d and d[a]!= b):returnFalse
d[a]= b
returnTruedefis_substitution_cipher(s1, s2):return f(s1, s2)and f(s2, s1)
from string import maketrans
defis_substitution_cipher(s1, s2):return s1.translate(maketrans(s1,s2))== s2 and s2.translate(maketrans(s2,s1))== s1
答案7:
defis_substitution_cipher(s1, s2):
encoding ={i:set()for i in s1}for i,j inzip(s1, s2):
encoding[i].add(j)for i in encoding.values():iflen(i)!=1:returnFalse
lst =[frozenset(i)for i in encoding.values()]returnlen(set(lst))==len(lst)
答案8:
defis_substitution_cipher(s1, s2):
plain, cipher ={},{}for a, b inzip(s1, s2):if plain.setdefault(a, b)!= b or cipher.setdefault(b, a)!= a:returnFalsereturnTrue
答案9:
from string import ascii_lowercase
defis_substitution_cipher(s1, s2):
r =set(ascii_lowercase)
d =dict()for a, b inzip(s1, s2):if a in d:if d[a]!= b:returnFalseelse:if b in r:
d[a]= b
r.discard(b)else:returnFalsereturnTrue
答案10:
defis_substitution_cipher(s1, s2):
sub_from, sub_to ={},{}for c1, c2 inzip(s1, s2):if c1 notin sub_from and c2 notin sub_to:
sub_from[c1], sub_to[c2]= c2, c1
elif c1 in sub_from and sub_from[c1]!= c2:returnFalseelif c2 in sub_to and sub_to[c2]!= c1:returnFalsereturnTrue