1. 程式人生 > 實用技巧 >劍指 Offer 46. 把數字翻譯成字串

劍指 Offer 46. 把數字翻譯成字串

題目描述

給定一個數字,我們按照如下規則把它翻譯為字串: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];
    }
};