B站的编程题,看似简单,其实不简单,大家来做一下
假设现在需要对一串数字字符串进行解码,我们知道改字符串的编码规则是
1->A
2->B
...
26->Z
输出数字N代表有多少种可能的结果
输入描述:
一个整数输出描述:
一个整数
例如:
111输出
3对应的结果是
AAA 、AK、KA
public class Solution {
public int numDecodings(String s) {
if(s.length()==0||s.charAt(0)=='0'){
return 0;
}
int dp[] = new int[s.length() +1];
dp[0]=1;
dp[1]=1;
for(int i=2;i<=s.length();i++){
if(s.charAt(i-1)!='0'){
dp[i] += dp[i-1];
}
if(Integer.valueOf(s.substring(i-2,i))>=10
&& Integer.valueOf(s.substring(i-2,i))<=26){
dp[i] +=dp[i-2];
}
}
return dp[s.length()];
}
} 

