AcWing 59. 把数字翻译成字符串(剑指offer)

给定一个数字,我们按照如下规则把它翻译为字符串:

0翻译成”a”,1翻译成”b”,……,11翻译成”l”,……,25翻译成”z”。

一个数字可能有多个翻译。例如12258有5种不同的翻译,它们分别是”bccfi”、”bwfi”、”bczi”、”mcfi”和”mzi”。

请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。

样例
输入:“12258”

输出:5

水。。。

class Solution {
public:
    int getTranslationCount(string s) {
        int dp[10005];memset(dp,0,sizeof(dp));
        int n = s.size();
        dp[0] = 1;
        for(int i = 1;i <= n;i++) {
            dp[i] = dp[i - 1];
            if(i >= 2) {
                int t = (s[i - 2] - '0') * 10 + (s[i - 1] - '0');
                if(t <= 25 && t >= 10) dp[i] += dp[i - 2];
            }
        }
        return dp[n];
    }
};
发布了844 篇原创文章 · 获赞 28 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/tomjobs/article/details/104962364