华为机考入门python3--(36)牛客36-字符串加密

分类:字符串

知识点:

  1. 判断一个元素是否在集合中 if char not in key_set

  2. 计算字母差 index = ord(char) - ord('a')

题目来自【牛客】

python 复制代码
# 生成加密表
def generate_cipher_table(key):
    key_set = set()
    cipher_table = ""

    # 去重
    for char in key:
        if char not in key_set:
            cipher_table += char
            key_set.add(char)

    # 未出现的字母按照正常字母表顺序加入新字母表
    for char in "abcdefghijklmnopqrstuvwxyz":
        if char not in key_set:
            cipher_table += char

    return cipher_table


# 使用给定的密匙加密信息
def encrypt_message(cipher_table, message):
    result = ""
    for char in message:
        # 计算索引
        index = ord(char) - ord('a')
        encrypted_char = cipher_table[index]
        result += encrypted_char
    return result

# 输入
key = input().strip()
message = input().strip()

# 生成加密表和加密信息,然后输出结果
cipher_table = generate_cipher_table(key)
encrypted_message = encrypt_message(cipher_table, message)
print(encrypted_message)
相关推荐
DuHz几秒前
汽车FMCW雷达互扰下的快速目标检测:谱峰累积法与泊松CFAR精读与推导
论文阅读·算法·目标检测·汽车·信息与通信·信号处理
2401_837088501 分钟前
算法边界情况处理套路总结
算法
八年。。3 分钟前
simulink与python联合仿真(一)安装MATLAB引擎
开发语言·python
计算机毕业编程指导师13 分钟前
【Python大数据选题】基于Spark+Django的电影评分人气数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·django·电影评分人气
烛衔溟18 分钟前
C语言图论:最短路径算法
c语言·算法·图论·dijkstra·bellman-ford·最短路径
烛衔溟20 分钟前
C语言图论:最小生成树算法
c语言·算法·图论·最小生成树·kruskal·prim
Yzzz-F30 分钟前
算法竞赛进阶指南 进阶搜索
算法·深度优先
weixin_4375463336 分钟前
注释文件夹下脚本的Debug
java·linux·算法
Python极客之家40 分钟前
基于Django的高校二手市场与社交系统
后端·python·数据挖掘·django·毕业设计
嗝o゚41 分钟前
Flutter 到鸿蒙开发:3个月技能迁移指南
flutter·华为·harmonyos