?題目描述
有一種技巧可以對數(shù)據(jù)進行加密,它使用一個單詞作為它的密匙。下面是它的工作原理:首先,選擇一個單詞作為密匙,如TRAILBLAZERS。如果單詞中包含有重復的字母,只保留第1個,將所得結(jié)果作為新字母表開頭,并將新建立的字母表中未出現(xiàn)的字母按照正常字母表順序加入新字母表。如下所示:
A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z
T?R?A?I?L?B?Z?E?S?C?D?F?G?H?J?K?M?N?O?P?Q?U?V?W?X?Y (實際需建立小寫字母的字母表,此字母表僅為方便演示)
上面其他用字母表中剩余的字母填充完整。在對信息進行加密時,信息中的每個字母被固定于頂上那行,并用下面那行的對應(yīng)字母一一取代原文的字母(字母字符的大小寫狀態(tài)應(yīng)該保留)。因此,使用這個密匙, Attack?AT?DAWN (黎明時攻擊)就會被加密為Tpptad?TP?ITVH。
請實現(xiàn)下述接口,通過指定的密匙和明文得到密文。
數(shù)據(jù)范圍:1≤100?1≤n≤100??,保證輸入的字符串中僅包含小寫字母
輸入描述
先輸入key和要加密的字符串文章來源:http://www.zghlxwxcb.cn/news/detail-667613.html
輸出描述
返回加密后的字符串文章來源地址http://www.zghlxwxcb.cn/news/detail-667613.html
示例一
輸入
nihao
輸出
ni
示例二
輸入
le
輸出
1,2,3,4,1,2,3,1,2,3,4,5,6
代碼實現(xiàn)
# coding:utf-8
import sys
try:
while True:
line = sys.stdin.readline().strip()
if line == '':
break
lines = line.split()
# print(lines)
s2 = list(lines[0])
line2 = sys.stdin.readline().strip()
if line2 == '':
break
lines2 = line2.split()
s1 = list(lines2[0])
res = []
lts = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z']
lt = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z']
# 對秘鑰字符串進行去重,并在自然字母表中剔除掉已有的秘鑰字符串
s3 = []
for i in range(len(s2)):
if s2[i] in s3:
continue
else:
s3.append(s2[i])
lt.remove(s2[i])
# 將秘鑰字符串和剔除秘鑰的字母表連在一起,行成新的密碼表
s4 = s3 + lt
# 對需要加密的字符串按照新的密碼表進行加密
for i in range(len(s1)):
index = lts.index(s1[i])
res.append(s4[index])
print(''.join(res))
except:
pass
到了這里,關(guān)于華為OD-字符串加密的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!