题目描述
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例:
思路:
用动态规划的方法,如果后两个数字的和大于10,小于26,则为m+n,否则,和i-1的翻译方法种类数相同
代码:
class Solution {
public int translateNum(int num) {
if(num<10){
return 1;
}
String str = String.valueOf(num);
int a = 0;
int b = 0;
for(int i = 0;i<str.length();i++){
if(i==0){
a = 1;
b = 1;
}else{
if(str.charAt(i-1)=='2'&&str.charAt(i)<='5'||str.charAt(i-1)=='1'){
int c = b;
b += a;
a = c;
}else {
a = b;
}
}
}
return b;
}
}