
原题链接
代码如下:
class Solution {
public int translateNum(int num) {
if (num <= 9)
return 1;
int rear = num % 100;
if (rear <= 9 || rear >= 26) {
return translateNum(num / 10);
} else {
return translateNum(num / 10) + translateNum(num / 100);
}
}
public static void main(String[] args) {
Solution a = new Solution();
int num = 12258;
System.out.println(a.translateNum(num));
}
}
class Solution {
public int translateNum(int num) {
String s = Integer.toString(num);
int len = s.length();
int[] dp = new int[len + 1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i < len + 1; i++) {
int temp = (s.charAt(i - 2) - '0') * 10 + s.charAt(i - 1) - '0';
if (temp >= 10 && temp <= 25) {
dp[i] = dp[i - 1] + dp[i - 2];
} else {
dp[i] = dp[i - 1];
}
}
return dp[len];
}
public static void main(String[] args) {
Solution a = new Solution();
int num = 12258;
System.out.println(a.translateNum(num));
}
}