考虑具体是哪几种字符串 (内容)
public static int len;
public static char [] cs;
public static int res=0;
public static void main(String[] args) {
int num=1123232;
cs=String.valueOf(num).toCharArray();
len=cs.length;
makeString(0,"");
System.out.println(res);
}
public static void makeString(int i,String s) {
if (i>len-1) System.out.println(s);
else {
int t=0;
if (i+1<len && (t=(cs[i]-48)*10+cs[i+1]-48)>9 && t<26) {
makeString(i+1,s+getChar(cs[i]-48));
if (i+1<len) makeString(i+2,s+getChar(t));
}
else
makeString(i+1,s+getChar(cs[i]-48));
}
}
public static char getChar(int n) {
return (char) (n+97);
}
注重的是有多少种翻译方式(数量)
public int translateNum(int num) {
char [] cs=String.valueOf(num).toCharArray();
int len=cs.length;
int [] dp=new int[len];
dp[0]=1;
int t;
for (int i=1;i<len;i++)
{
dp[i]=dp[i-1];
t=(cs[i-1]-48)*10+cs[i]-48;
if (t>9 && t<26)
{
if (i-2>0)//因为dp[0]=1 就把“=”归入else中
dp[i]+=dp[i-2];
else dp[i]++;
}
}
return dp[len-1];
}