劍指offer 046把數字翻譯成字串

2021-09-01 22:32:31 字數 1124 閱讀 5269

"""

題目:給定乙個數字,我們按照如下規則把它翻譯為字串: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...