题解 | #字符串加密#

字符串加密

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)

全部评论

相关推荐

用微笑面对困难:加急通知你不合适,也很吗有礼貌了你。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务