Leetcode--把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

示例 1:

输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"

思路

直接递归暴力解决 

class Solution {
public:
    int result= 0;
    void translate(string num, int index){
        if(index>= int(num.length())){
            result++;
            return;
        }
        // 一个数单独翻译
        translate(num, index+ 1);
        // 可以两个数一起翻译的条件是:第一个数不等于0,两个数组成的数小于26
        if(index+ 1< int(num.length())&& num[index]- '0'!= 0
            && ((num[index]- '0')*10+ num[index+ 1]- '0'<= 25))
            translate(num, index+ 2);
    }

    int translateNum(int num) {
        string strNum= to_string(num);
        translate(strNum, 0);
        return result;
    }
};
发布了208 篇原创文章 · 获赞 28 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_41879093/article/details/105294509