91. Decode Ways
A message containing letters from A-Z
is being encoded to numbers using the following mapping:
1 2 3 4
| 'A' -> 1 'B' -> 2 ... 'Z' -> 26
|
Given a non-empty string containing only digits, determine the total number of ways to decode it.
Example 1:
1 2 3
| Input: "12" Output: 2 Explanation: It could be decoded as "AB" (1 2) or "L" (12).
|
Example 2:
1 2 3
| Input: "226" Output: 3 Explanation: It could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).
|
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution(object): def numDecodings(self, s): """ :type s: str :rtype: int """ if not s: return 0
dp = [0 for x in range(len(s) + 1)] dp[0] = 1 dp[1] = 1 if 0 < int(s[0]) <= 9 else 0
for i in range(2, len(s) + 1): if 0 < int(s[i-1:i]) <= 9: dp[i] += dp[i - 1] if s[i-2:i][0] != '0' and int(s[i-2:i]) <= 26: dp[i] += dp[i - 2] return dp[len(s)]
|