剑指offer 46. 把数字翻译成字符串
题目描述
解题思路
本题是先将 num 转为 String 类型,然后转成 char 数组方便处理。
class Solution {
public int translateNum(int num) {
char[] str = String.valueOf(num).toCharArray();
//定义:以str[0...i - 1]的字符串共有dp[i]种翻译方法
int[] dp = new int[str.length + 1];
//base case
dp[0] = dp[1] = 1;
for (int i = 2; i <= str.length; i++) {
//当前位和上一位的数字
int cur = str[i - 1] - '0', pre = str[i - 2] - '0';
//如果当前位和上一位能组合起来翻译,则有两种选择
if ((cur + 10 * pre) >= 10 && (cur + 10 * pre) <= 25) {
dp[i] = dp[i - 1] + dp[i - 2];
} else {
dp[i] = dp[i - 1];
}
}
return dp[str.length];
}
}