示例1:
輸入: 12258
輸出: 5
解釋: 12258有5種不同的翻譯,分別是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
2.1 思路分析該題要求按照給定規則將數字翻譯成字串,返回翻譯方案的數量,這裡求的是方案總數,因此想到動態規劃;
既然要用動態規劃,那麼需要定義狀態,先將數字num看成 n (num的長度)位數的組合,即
那麼有了狀態之後,開始找狀態轉移方程,如果
如果現在要初始化初值了,dp[1] = 1,這個沒問題,dp[2]並不能確定,只有當1,2位數組合成的數字在"10"~"25"之間時,dp[2] = 2,因此我們初始化dp[0] = 1。
2.2 **實現
class solution else
}return dp[n];}}
2.3 複雜度分析3.1 思路分析
因為上述dp[i]只與dp[i-1]及dp[i-2]有關,因此可以通過變數迭代的方式避免申請dp陣列,這樣空間複雜度可降至o(1);
3.2 **實現
class solution else
pre = pre_next;
pre_next = cur;
}return cur;}}
4.1 思路分析上述方法中字串str仍占用了o(n)的空間,為了優化,考慮利用數字求餘的方式來獲取各個位上的數;
4.2 **實現
class solution else
pre = pre_next;
pre_next = cur;
y = x;
}return cur;}}
4.3 複雜度分析 把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 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為例...