leetcode 題庫46. 把數字翻譯成字符串

面試題46. 把數字翻譯成字符串
給定一個數字,我們按照如下規則把它翻譯爲字符串:0 翻譯成 “a” ,1 翻譯成 “b”,……,11 翻譯成 “l”,……,25 翻譯成 “z”。一個數字可能有多個翻譯。請編程實現一個函數,用來計算一個數字有多少種不同的翻譯方法。

思路:
這題其實和斐波那契數列很像,f(n) = f(n-1)+f(n-2)。但是f(n-2)多了一個限制,只有在10-25之間的數才滿足。

int translateNum(int num) {
        string str = to_string(num);

        int f_1 = 1;   //第一個數肯定可以轉換
        int f_2 = 1;  //當滿足條件時,f(1)=1,不爲0
        int f = 1;     //如果長度只有1 , 設初始值爲1

        for(int i = 1; i < str.size(); ++i)
        {
            string n = str.substr(i-1, 2);
            if(n<="25" && n >="10")
            {
                f = f_1 + f_2;
            }
            else
            {
                f = f_1;
            }
            f_2 = f_1;
            f_1 = f;
        }

        return f;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章