使用以下映射将包含A-ZIS的字母的消息编码为数字:'A' - > 1,'B' - > 2 ...'Z' - > 26 给定包含数字的编码消息,确定解码方式的总数(python)(原创)
题目:有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。现在给一串数字,给出有多少种可能的译码结果。

实现逻辑:
1,使用队列的数据类型,每一轮更新一次可能出现的情况;
2,每次加入新的字符,就可能出现1-2种结果类型;
3,核心其实还是遍历了所有可能出现的结果;
说明:
现在网上搜索的代码都是只能显示有多少种可能的,几乎没有这些可能的具体结果
难点&遇到困难:
当初设计这个算法的时候,其实整体的逻辑流程都是没有问题的。但是,由于使用了浅拷贝所以导致了程序的结果总是有问题。
不过,还好后来检查中间流程的时候发现的算法错误的原因出现在拷贝的这个地方。
以前的错误形式(浅拷贝):d_mid和d1的指针指向同一个内存空间,共享相同的数据
d_mid = d1[j]
正确的形式(深拷贝):d_mid 重新获取系统内存存储和d1[ j ]相同的数据
d_mid = d1[j].copy()
实现代码:
d0 = input()
d1 = [[d0[0]]] # 初始化
# 对原始数据进行穷举
num = len(d1)
for j in range(num - 1, -1, -1): # d1
d_mid = d1[j].copy()
d_mid.append(i)
if len(d1[j][-1]) == 2 and int(i) != 0: # 前一个是二位数,并且当前数不为0
d1.append(d_mid) # 一位数 直接加入后面
del d1[j]
elif len(d1[j][-1]) == 1 and int(i) != 0: # 前面是一个一位数,并且当前数不为0
d1.append(d_mid) # 一位数直接加入后面
str_mid = d1[j][-1] + i # 当前二位数
if int(str_mid) <= 26:
d1.append(d1[j].copy()) # 转变成二位数
d1[-1][-1] = str_mid
del d1[j]
elif len(d1[j][-1]) == 1 and int(i) == 0: # 前面是一个一位数,并且当前数为0
str_mid = d1[j][-1] + i # 当前二位数
if int(str_mid) <= 26:
d1.append(d1[j].copy()) # 转变成二位数
d1[-1][-1] = str_mid
del d1[j]
# print(d1)
# 对d1中的所有可能性进行输出
for i in d1:
d2 = ''
for j in i:
d2 += chr(int(j) + 64)
print(d2)
print(len(d1))
输入例子1:
1345456
输出例子1:
MDEDEF
ACDEDEF
2
参考地址:
DP----解码,输出多少种译码结果
使用以下映射将包含A-ZIS的字母的消息编码为数字:'A' - > 1,'B' - > 2 ...'Z' - > 26 给定包含数字的编码消息,确定解码方式的总数(python)(原创)的更多相关文章
- mysql忘记密码的处理方式(整理非原创)
方案1.通过跳过授权的方式 1.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的中加上:skip-grant-tables . 2.重新启动mysqld # ubun ...
- 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10的100次幂。 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。 输入样例: 1234567890987654321123456789 输出样例: yi san wu
这是PAT中的一道练习题 刚开始的时候我想着直接定义正整数n,结果走了很大的弯路,因为题目中要求n小于10的100次幂,即最大的正整数n有100位,而C语言中整型数字最大占8个字节的存储空间,如果按无 ...
- 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字(python)(原创)
背景: 电话面试&手撕代码 2019.03.22 Mufasa 问题: 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字 条件: 这串数字是有序数 解决方法: 核心代码只有 ...
- Java使用JNA方式调用DLL(动态链接库)(原创,装载请注明出处)
Java使用JNA调用DLL 1.准备 1.JDK环境 2.Eclipse 3.JNA包 下载JNA包: (1).JNA的Github:https://github.com/java-native-a ...
- 常用的user32说明
函数名称 说明 ActiveKeyboardLayout 激活一个不同的键盘布局,该布局必须先由LoadKeyBoardLayout函数装载AdjustWindowRect 根据希望的用户矩形大小来计 ...
- [Swift]LeetCode91. 解码方法 | Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- LeetCode第[91]题(Java):Decode Ways(解码方法数)
题目:解码方法数 难度:Medium 题目内容: A message containing letters from A-Z is being encoded to numbers using the ...
- Python3中文教程
搜索 此文档来源自网络 安装 PYTHON❝ Tempora mutantur nos et mutamur in illis. (时光流转,吾等亦随之而变.) ❞ — 古罗马谚语 深入欢迎来到 Py ...
- Linux常用命令详解—基于CentOS7
## Linux 目录- /:根目录,一般只存放目录,不存放文件- /bin -> /usr/bin:可执行二进制文件的目录,也是常用命令目录,如常用的命令 ls.cat.mv 等- /boot ...
随机推荐
- Maximum Width Ramp LT962
Given an array A of integers, a ramp is a tuple (i, j) for which i < j and A[i] <= A[j]. The ...
- 笔记本电脑连接wifi,同时提供热点wifi给手机使用
笔记本电脑连接wifi,同时提供热点wifi给手机使用 用电脑建立WiFi供手机平板设备使用ps:电脑需要有无线网卡,一般笔记本都自带 此教程仅适用Windows 7 & 8,1.打开笔记本的 ...
- 字典 Dictionary
字典 Dictionary {Key-Value} 1.字典是无序的,没有下标(因为有key,取值直接用key值) Key尽量不要用中文编写,以防止编码不同导致取不出来 2.字典常用方法: 查找: ① ...
- H5新特性-canvas绘图--渐变对象路径(最复杂)--图片--变形操作
今天的目标 3.1:canvas绘图--(重点掌握:渐变对象.路径.图片.变形) 3.2:canvas绘图--渐变对象 线性渐变: linearGradient 径向渐变: var g = ctx.c ...
- Apache万网SSl证书安装不成功的一个注意事项(https安全链接,基于phpstudy)
最近,微信小程序挺火,要做小程序网站域名必须要有ssl证书,形成https://的安全链接,我于是从万网上下载了一个免费的ssl证书,按照万网提供的安装方式怎么也安装不好,最后我这个Apache小白费 ...
- contaner
what Container技术是直接将一个应用程序所需的相关程序代码.函式库.环境配置文件都打包起来建立沙盒执行环境 history 早在1982年,Unix系统内建的chroot机制也是一种Con ...
- BERT(Bidirectional Encoder Representations from Transformers)
BERT的新语言表示模型,它代表Transformer的双向编码器表示.与最近的其他语言表示模型不同,BERT旨在通过联合调节所有层中的上下文来预先训练深度双向表示.因此,预训练的BERT表示可以通过 ...
- Spring资源加载器抽象和缺省实现 -- ResourceLoader + DefaultResourceLoader(摘)
概述 对于每一个底层资源,比如文件系统中的一个文件,classpath上的一个文件,或者一个以URL形式表示的网络资源,Spring 统一使用 Resource 接口进行了建模抽象,相应地,对于这些资 ...
- Photoshop功能组成色彩快捷键
功能 专业测评 Photoshop的专长在于图像处理,而不是图形创作.图像处理是对已有的位图图像进行编辑加工处理以及运用一些特殊效果,其重点在于对图像的处理加工:图形创作软件是按照自己的构思创意,使用 ...
- webstorm验证码
2017-2-16 亲测可用 http://idea.imsxm.com/ webstorm10 注册码 User or company Name: EMBRACE ===== LICENSE KEY ...