题目:
把数字0翻译成a,1翻译成b,25翻译成z,例如12258有5种不同的翻译,请问一个数字一共有多少种翻译
思路:
public int func(int num) {
if(num<0)
return 0;
return getCount(String.valueOf(num));
}
private int getCount(String str){
int length=str.length();
int[] ints=new int[length];
//从后往前计算,避免重复计算
for(int i=length-1;i>=0;i--){
int count=0;
if(i<length-1){
count=ints[i+1];
}else{
count=1;
}
if(i<length-1){
int digit1=str.charAt(i)-'0';
int digit2=str.charAt(i+1)-'0';
int temp=digit1*10+digit2;
if(temp>=0&&temp<=25){
if(i<length-2){
count+=ints[i+2];
}else{
count+=1;
}
}
}
ints[i]=count;
}
return ints[0];
}