問題描述:
給定乙個數字,我們按照如下規則把它翻譯為字串:
0翻譯成」a」,1翻譯成」b」,……,11翻譯成」l」,……,25翻譯成」z」。
乙個數字可能有多個翻譯。例如12258有5種不同的翻譯,它們分別是」bccfi」、」bwfi」、」bczi」、」mcfi」和」mzi」。
請程式設計實現乙個函式用來計算乙個數字有多少種不同的翻譯方法。
樣例
使用動態規劃求解,首先明確三步 1)狀態表示 2)狀態計算 3)邊界條件。在本題目中,使用 f(i) 來表示前 i 個字母可以構成的翻譯方式個數。f(i)=f(i-1)+f(i-2)這種情況是使用到兩個字母的情況, 字母順序從10到25的構成需要兩個字母,因此需要判斷使用兩個字母的範圍是在10~25之間才成立。 如果只使用乙個字母那麼f(i)=f(i-1)
class
solution
return f[n];}
};
2021.5.16
題目描述
給定乙個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 「a」 ,1 翻譯成 「b」,……,11 翻譯成 「l」,……,25 翻譯成 「z」。乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。
示例 1:
輸入: 12258
輸出: 5
解釋: 12258有5種不同的翻譯,分別是"bccfi", 「bwfi」, 「bczi」, 「mcfi"和"mzi」
與把數字翻譯成字串類似,兩個題目轉化條件不一致。本題目0可以組成數字,鏈結中的題目0無法組成數字,因此需要變換一下動態規劃的式子。
對於本題目不需要考慮某一位置為0的情況直接轉化就行。對於大於兩位的數字需要考慮前面一位數字和當前位組成的數字其範圍是否在10~25之間,如果在dp[i]+=dp[i-2];
class
solution
}return dp[n];}
};
把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 25翻譯成 z 乙個數字可能有多個翻譯。例如12258有5種不同的翻譯,它們分別 bccfi bwfi bczi mcfi 和 mzi 請程式設計實現乙個函式用來計算乙個數字有多少種不同的翻譯方法 1.dfs ...
把數字翻譯成字串
給定乙個數字,我們按照如下的規則將它翻譯成字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 25翻譯成 z 乙個數字可能有多種翻譯,例如,12258有5種翻譯,分別是 bccfi bwfi bczi mcfi 和 mzi 請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。這道題,乍一看...
把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯成字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 25翻譯成 z 乙個數字可能有多個翻譯。例如12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi mzi 請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。以12258為例...