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()]; } }