"""
題目:給定乙個數字,我們按照如下規則把它翻譯為字串:0翻譯成「a」,1翻譯成「b」,……,11翻譯成「l(大寫l)」,……,25翻譯為
「z」。乙個數字可能有多少個翻譯。例如,12258有5種不同的翻譯,分別是「bccfi」,「bwfi」,「bczi」,「mcfi」,「mzi」。
"""# 這道題目的解法是動態規劃
class solution:
def function(self, n):
if n < 0:
return 0
# 現將n轉化為字串
string = str(n)
return self.core(string)
def core(self, string):
string_length = len(string)
if string_length == 1:
return 1
if string_length == 2:
if 10 <= int(string[0]+string[1]) <= 25:
return 2
else:
return 1
array = [0 for i in range(string_length)]
array[0] = 1
if 10 <= int(string[0] + string[1]) <= 25:
array[1] = 2
else:
array[1] = 1
for i in range(2, string_length):
converted = int(string[i-1]+string[i])
if 10 <= converted <= 25:
array[i] = array[i-2]+array[i-1] # 這個是動態規劃的重點
else:
array[i] = array[i-1]
return array[string_length-1]
if __name__ == '__main__':
s = solution()
print(s.function(12258))
劍指 Offer把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...
劍指offer 把數字翻譯成字串(c
題目描述 給定乙個數字,按照如下規則翻譯成字串 0翻譯成 a 1翻譯成 b 25翻譯成 z 乙個數字有多種翻譯可能,例如12258一共有5種,分別是bccfi,bwfi,bczi,mcfi,mzi。實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。思路動態規劃,從最小的問題開始 f r 表示以r...
《劍指offer》面試題46 把數字翻譯成字串
思路 下面我們從自上而下和自下而上兩種角度分析這道題目,以12258為例 自上而下,從最大的問題開始,遞迴 12258 b 2258 m 258 bc 258 bw 58 mc 58 mz 8 bcc 58 bcz 8 bwf 8 mcf 8 mzi bccf 8 bczi bwfi mcfi bc...