劍指 Offer 46 把數字翻譯成字串

2021-10-24 12:16:44 字數 790 閱讀 1522

以12256為例從左邊開始翻譯可以分為兩個子問題:翻譯1,2256,翻譯12,256;2256可以分解為翻譯2,256 | 22,56。256可以分解為翻譯2,56。由上分析可以使用遞迴求解但是存在重複部分「56」,所以考慮由下至上解決問題,這樣可以消除子問題假設f(i

)f(i)

f(i)

是第i個數開始存在的翻譯數則f(i

)=f(

i+1)

+g(i

,i+1

)f(i

+2)f(i) = f(i+1) + g(i,i+1)f(i+2)

f(i)=f

(i+1

)+g(

i,i+

1)f(

i+2)

其中g (i

,i+1

)g(i,i+1)

g(i,i+

1)表示第i與第i+1個數合併後在10~25的範圍內為1否則為0。**如下:

class

solution

private

inttranslatenum

(string numberinstring)

} counts[i]

= count;

} count = counts[0]

;return count;

}}

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

給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...

劍指 Offer 46 把數字翻譯成字串

給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...

劍指 Offer 46 把數字翻譯成字串

方法 演算法思想 動態規劃,到i的時候,區分最後兩位 是不是 10,25 最後一位 其他情況 時間複雜度 o n 空間複雜度 o n 邊界條件 兩位的時候,有兩種情況,所以dp 1 補充知識 class solution public int translatenum int num string ...