面試題46 劍指offer 把數字翻譯成字串

2021-09-26 07:37:29 字數 776 閱讀 2794

題目:

給定乙個數字,按照如下規則翻譯成字串:0翻譯成「a」,1翻譯成「b」…25翻譯成「z」。乙個數字有多種翻譯可能,例如12258一共有5種,分別是bccfi,bwfi,bczi,mcfi,mzi。實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。

思路:

動態規劃,dp[i]表示從個位到第i位,一共有多少種表達方式,以12345為例,當第i位和i+1位的值大於25時,比如34,因為3和4不能用乙個字母表示所以345表示方式數與45的表示數一樣;如果小於25,則dp[i]=dp[i+1]+dp[i+2],也與i+2位有關,比如1這一位,可以有1+2345的表示數和12+345的表示數的和。

**:

private

static

intnum

(int number)

int[

] dp=

newint

[len]

; dp[len-1]

=1;if

((int)arr[len-2]

-48+(

int)arr[len-1]

-48<=25)

else

for(

int i = len-

3; i >=

0; i--

)else

}return dp[0]

;}

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

劍指 面試題46 把數字翻譯成字串

題目給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。0 n um 231 0 num 2 0 n um 23 1思路 動態規劃 1 25以內的數字...

劍指offer 面試題46 求1 2 n

題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 方法一 利用建構函式求解。程式不讓使用迴圈,但是我們可以以另一種方式實現迴圈,譬如利用建構函式,不斷的呼叫建構函式,函式的執行語句放在建構函式內部,當我們建立n個類的...