把数字翻译成字符串

211 阅读1分钟

把数字翻译成字符串

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

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

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

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

样例
输入:"12258"
输出:5

DP

时间复杂度O(n)

class Solution {
    public int getTranslationCount(String s) {
           int n = s.length();
           int dp[] = new int[n+1];
           dp[0] = dp[1] = 1;
           for(int i = 2;i <= n;i++){
               if(s.charAt(i-2) == '1' || (s.charAt(i-2) == '2' && s.charAt(i - 1) < '6')){
                   dp[i] = dp[i-1] + dp[i-2];
               }
               else{
                   dp[i] = dp[i-1];
               }
           }
           return dp[n];
    }
}