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