该程序找到了我们可以用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
    猜你喜欢