劍指 Offer 46. 把數字翻譯成字串
阿新 • • 發佈:2020-09-07
題目描述
給定一個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 “a” ,1 翻譯成 “b”,……,11 翻譯成 “l”,……,25 翻譯成 “z”。一個數字可能有多個翻譯。請程式設計實現一個函式,用來計算一個數字有多少種不同的翻譯方法。
示例1:
輸入: 12258
輸出: 5
解釋: 12258有5種不同的翻譯,分別是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
提示:
0 <= num < 231
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof
程式碼實現
class Solution { public: int translateNum(int num) { string number = to_string(num); vector<int> trans_num; trans_num.push_back(1); trans_num.push_back((stoi(number.substr(0, 2)) < 26) ? 2 : 1); for(int i = 2; i < number.length(); i++) { int lambda = 0; string cur_2d = number.substr(i - 1, 2); if(stoi(cur_2d) < 26 && stoi(cur_2d) > 9) lambda = 1; trans_num.push_back(trans_num[i - 1] + lambda * trans_num[i - 2]); } return trans_num[number.length() - 1]; } };