欢迎光临
我们一直在努力

消息解码

"""
消息解码
一条包含字母A-Z的消息通过以下映射进行了编码:
'A’->'1'
'B'->'2'
....
’Z' -> '26'
解码消息,所有数字必须基于上述映射规则,反向映射回字母(可能有多种组合)。
例如,'26'可以映射为:"BF'或者’Z'。
给定一个只含数字的非空字符串,统计解码组合的总数。
"""

def decoding(s):
    """
    解码函数,根据给定的数字字符串s解码出对应的字母字符串长度。

    解码规则是基于字母表,其中'1'对应'a','2'对应'b',依此类推,'26'对应'z'。
    如果一个数字序列可以被解码成一个字母,则按照解码后的字母长度累加。

    参数:
    s (str): 待解码的数字字符串。

    返回:
    int: 解码后的字母字符串的长度。
    """
    # 初始化长度变量
    length = len(s)
    # 初始化三个变量,用于计算解码后的字符串长度
    x = 0  # 昨天的解码长度
    y = 1  # 今天的解码长度
    z = 0  # 明天的解码长度
    # 遍历字符串,计算解码长度
    for i in range(1, length + 1):
        # 重置明天的解码长度
        z = 0
        # 如果当前字符不是'0',则可以解码成一个字母,长度加1
        if s[i - 1] != "0":
            z += y
        # 如果当前字符和前一个字符组成的数字在1到26之间(包含两端),则可以解码成两个字母,长度加1
        if i > 1 and s[i - 2] != "0" and int(s[i - 2:i]) <= 26:
            z += x
        # 更新昨天和今天的解码长度
        x = y
        y = z
    # 返回最终的解码长度
    return z

if __name__ == '__main__':
    s = "1212"
    print(decoding(s))
赞(0) 打赏
未经允许不得转载:创想未来 » 消息解码

评论 抢沙发

评论前必须登录!

 

更好的Python学习

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册