91. Decode Ways Medium
Description
A message containing letters from A-Z is being encoded to numbers using the following mapping:
‘A’ -> 1
‘B’ -> 2
…
‘Z’ -> 26
Given a non-empty string containing only digits, determine the total number of ways to decode it.
Example
- Example 1:
Input: "12"
Output: 2
Explanation: It could be decoded as "AB" (1 2) or "L" (12).
- Example 2:
Input: "226"
Output: 3
Explanation: It could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).
题意
对给定数字字符串进行解码,解码规则是’1’->A,‘2’->B,…,‘26’->Z,看有多少种不同的解码方式。
解体思路
从后往前看倒数第1 和倒数第2 的解码方式有多少,类似爬楼梯,动态规划可求解。
code
class Solution:
def numDecodings(self, s: str) -> int:
if s == '0' or len(s) == 0 :
return 0
if len(s) == 1:
return 1
res = [0] * (len(s) + 1)
res[0] = 1
for i in range(1, len(res)):
if s[i-1] != '0':
res[i] = res[i-1]
if i != 1 and '10' <= s[i-2:i] <= '26':
res[i] += res[i-2]
return res[-1]