| 
 | 
 
 
发表于 2022-1-28 14:12:15
|
显示全部楼层
 
 
 
x [l,o,v,e] 
y [2,2,3,3] 
伪代码: 
for each in x的执行内容 
 
    第一轮 
    each = l 
     
    #l的数量是1,不进入if 
    if(l的数量 > 1 且 标记位 == 0){ 
    } 
     
    第二轮第三轮第四轮同上,什么也不做 
 
for each in y的执行内容 
    第一轮 
    each = 2 
    #2在y中的数量 > 1,进入循环 
    if(2在y中的数量 > 1 且 标记位 == 0) 
        #i记录 2在y 中第一次出现的位置,即0 
        i = 0 
         
        #last表示x在i位置的元素即l 
        last = l 
         
        #i是位置,位置为-1表示非法 
        while i != -1 
            第一次循环 l == x[0],不进入if 
            #i记录2在y中下一次出现的位置即i=1,没有再次出现,则i=-1 
            i = x.find(each, i + 1) 
             
            第二轮循环 l != x[1],进入if 
                print("由于替换字符出现冲突,该密文无法解密!") 
                标记为 -1 
                break 
 
====================================================== 
解释: 
为了方便说明,我们把一对(x,y)称作一个加密对                 
大概意思就是 
x [l,o,v,e] 
y [2,2,3,3] 
时,在执行 for each in y 时, 
先形成  (‘l’,2)  的加密组合,并用last记录 x 即加密对左边的'1' 
然后找了一下y中 第二次出现2的位置,对应取出x中该位置的o进行比较,发现o并不等于last记录的x值,这样就说明,这个位置的加密对('o',2)就和之前我们生成的('l',2)冲突了 |   
 
 
 
 |