题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
# 母表: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
# 密钥: T R A I L B L A Z E R S -> A L R 重复
# 选择一个单词作为密匙
# 如果单词中包含有重复的字母,只保留第1个,将所得结果作为新字母表开头
# 将新建立的字母表中未出现的字母按照正常字母表顺序加入新字母表
key_table = input() # 密钥
key = input() # 需要加密的字符
alpha_table = 'abcdefghijklmnopqrstuvwxyz' # 26字母表
next_table = 'abcdefghijklmnopqrstuvwxyz' # 尾部追加表
new_table = '' # 新字母表
# 去除密钥中的重复字符
for i in key_table:
if i not in new_table: # 若字母不存在于新表中,添加
new_table += i
next_table = next_table.replace(i, '') # 在26字母表中删除密钥中的字符
new_table += next_table # 在后面追加没有出现过的字符
ans = ''
for i in key:
if i.islower():
n = ord(i) - 97 # 通过ASCII码减去 a 的ASCII码得到在字母表中的下标
ans += new_table[n]
elif i.isupper():
n = ord(i) - 65 # # 通过ASCII码减去 A 的ASCII码得到在字母表中的下标
ans += new_table[n].upper() # 转换大写追加
else: # 字符
ans += i
print(ans)
