Leetcode 面試題46.把數字翻譯成字符串
1 題目描述(Leetcode題目鏈接)
給定一個數字,我們按照如下規則把它翻譯爲字符串:0 翻譯成 “a” ,1 翻譯成 “b”,……,11 翻譯成 “l”,……,25 翻譯成 “z”。一個數字可能有多個翻譯。請編程實現一個函數,用來計算一個數字有多少種不同的翻譯方法。
輸入: 12258
輸出: 5
解釋: 12258有5種不同的翻譯,分別是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
2 題解
動態規劃,判斷當前數字能否和前一個數字組成字母。
class Solution:
def translateNum(self, num: int) -> int:
arr = list(str(num))
n = len(arr)
dp = [0] * (n + 1)
dp[0], dp[1] = 1, 1
for i in range(2, n + 1):
if arr[i-2] == "1" or (arr[i-2] == "2" and arr[i-1] <= "5"):
dp[i] = dp[i-2]
dp[i] += dp[i-1]
return dp[-1]