給定乙個數字,我們按照如下規則把它翻譯為字串:0翻譯成"a",1翻譯成"b",……,11翻譯成"l",……,25翻譯成"z"。乙個數字可能有多個翻譯。例如12258有5種不同的翻譯,它們分別"bccfi", "bwfi", "bczi", "mcfi" 和"mzi" 。請程式設計實現乙個函式用來計算乙個數字有多少種不同的翻譯方法
1.dfs
2.dp
class solution:
def translatenum(self, num: int) -> int:
num=str(num)
def dfs(index):
if index==len(num):
return 1
res=0
for i in range(index,len(num)):
if int(num[index:i+1])<=25 and len(str(int(num[index:i+1])))==len(num[index:i+1]):
res+=dfs(i+1)
return res
return dfs(0)
#1個數字直接搜尋,2個數字當第乙個數字不是0且2位數<=25時搜尋
class solution:
def translatenum(self, num: int) -> int:
s=str(num)
res=0
def dfs(index):
nonlocal res
if index>=len(s)-1:
res+=1
return
dfs(index+1)
tmp=int(s[index])*10+int(s[index+1])
if tmp<=25 and s[index]!='0':
dfs(index+2)
dfs(0)
return res
class solution:
def translatenum(self, num: int) -> int:
num = str(num)
n = len(num)
if n <= 1:
return 1
dp = [1] * n
for i in range(1, n):
dp[i] = dp[i - 1] # 必出現
if num[i - 1] == '1' or (num[i - 1] == '2' and num[i] <= '5'):
dp[i] += dp[i - 2] # 有可能出現
return dp[-1]
把數字翻譯成字串
給定乙個數字,我們按照如下的規則將它翻譯成字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 25翻譯成 z 乙個數字可能有多種翻譯,例如,12258有5種翻譯,分別是 bccfi bwfi bczi mcfi 和 mzi 請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。這道題,乍一看...
把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯成字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 25翻譯成 z 乙個數字可能有多個翻譯。例如12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi mzi 請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。以12258為例...
把數字翻譯成字串
示例1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi 和 mzi 2.1 思路分析該題要求按照給定規則將數字翻譯成字串,返回翻譯方案的數量,這裡求的是方案總數,因此想到動態規劃 既然要用動態規劃,那麼需要定義狀態,先將數字num看成 ...