给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
动态规划
dp[i] 代表到当前字符有多少种翻译数
当第i位字符和第i - 1位字符可以翻译成字符串时,dp[i] = dp[i - 1] + dp[i - 2]
反之dp[i] = dp[i - 1]
class Solution {
public int translateNum(int num) {
String nums = String.valueOf(num);
int[] res = new int[nums.length() + 1];
res[0] = 1;
res[1] = 1;
for(int i = 2; i <= nums.length(); i++){
String pre = nums.substring(i - 2, i);
res[i] = res[i - 1];
if (pre.compareTo("25") <= 0 && pre.compareTo("10") >= 0) {
res[i] += res[i - 2];
}
}
return res[nums.length()];
}
}