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

2021-10-21 21:11:21 字數 845 閱讀 5018

總結

給定乙個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 「a」 ,1 翻譯成 「b」,……,11 翻譯成 「l」,……,25 翻譯成 「z」。乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。

示例 1:

輸入: 12258

輸出: 5

解釋: 12258有5種不同的翻譯,分別是"bccfi", 「bwfi」, 「bczi」, 「mcfi"和"mzi」

動態規劃法:dp[i]表示i位置的字元對應的可翻譯方法種數。當前狀態和前兩個狀態有關。轉移方式:

當前字元和前乙個字元組成的數字在[0–25]之間,並且,前乙個字元數字不為0,則當前狀態更新為前兩個狀態之和;

否則,當前狀態保持為前一狀態值。

最後返回最後乙個字元數字的狀態值即可。

另外,第二個字元具有特殊性,需要滿足與第乙個字元組成的數字在[0–25]之間才能是2,否則其值為1。

class

solution

dp[0]

=1;if

((chars[1]

-'0'

+(chars[0]

-'0')*

10)>=0&&

(chars[1]

-'0'

+(chars[0]

-'0')*

10)<=25)

else

for(

int i =

2; i < chars.length; i++

)else

}return dp[chars.length -1]

;}}

暫時沒有總結,待續。。。

劍指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 ...