该程序找到了我们可以用Python解码消息的多种方式
假设我们的映射类似于'a'=1,'b'=2,...'z'=26,并且我们有一个已编码的消息消息字符串,我们必须计算它可以被解码的方式的数量。
因此,如果输入类似于message=“222”,则输出将为3,因为可以用3种方式对此进行解码:bbb,bv和vb。
为了解决这个问题,我们将遵循以下步骤-
备忘:=与邮件大小相同的大小为0的列表+1
备忘录[0]:=1
消息[0]与“0”不同时,备注[1]:=1,否则为0
对于我在消息大小的2范围内,
备忘录[i]:=备忘录[i]+备忘录[i-2]
备忘录[i]:=备忘录[i]+备忘录[i-1]
n1:=消息的数值[从索引i-1到i]
n2:=消息的数值[从索引i-2到i]
n1_valid:=当n1>0时为true
n2_valid:=当n2>9和n2<27时为true
如果n1_valid为true,则
如果n2_valid为true,则
返回备忘录的最后一个元素
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, message):
memo = [0 for i in range(len(message)+1)]
memo[0] = 1
memo[1] = 1 if message[0]!="0" else 0
for i in range(2,len(message)+1):
n1 = int(message[i-1:i])
n2 = int(message[i-2:i])
n1_valid= n1>0
n2_valid= n2>9 and n2<27
if n1_valid:
memo[i]+=memo[i-1]
if n2_valid:
memo[i]+=memo[i-2]
return memo[-1]
ob = Solution()message = "2223"
print(ob.solve(message))输入值
"2223"
输出结果
5