首页 > 代码库 > Decode ways
Decode ways
用了一个多小时,根据测试用例如果当前为0,前面必须为1,或者2,并且两者组合成一个dp[i]=dp[i-2];其他情况就简单一些,一定能dp[i-1]和这个单独,可能d[i-2]
1 public class Solution { 2 public boolean isTwo(int a,int b) 3 { 4 int ans=a*10+b; 5 if(ans>=11&&ans<=26) return true; 6 return false; 7 8 9 10 }11 12 public int numDecodings(String s) {13 char c[]=s.toCharArray();14 int len=c.length;15 16 if(len==0) return 0;17 if(c[0]==‘0‘) return 0;18 if(len==1) return 1;19 20 int dp[]=new int[len+3];21 //dp[0]=0;A22 dp[0]=1;// the len==123 if(c[1]==‘0‘)24 { 25 if(c[0]==‘1‘||c[0]==‘2‘) dp[1]=1;26 else return 0;27 28 }29 else30 {31 if(isTwo(c[0]-‘0‘,c[1]-‘0‘))dp[1]=2;32 else dp[1]=1;33 34 }35 36 for(int i=2;i<len;i++)37 { 38 if(c[i]==‘0‘)39 {40 if(c[i-1]==‘1‘||c[i-1]==‘2‘)41 {42 dp[i]=dp[i-2]; continue;43 }44 else return 0;45 46 }47 else48 {49 50 51 dp[i]+=dp[i-1];52 if(isTwo(c[i-1]-‘0‘,c[i]-‘0‘)) dp[i]+=dp[i-2];53 }54 55 56 }57 58 59 60 return dp[len-1];61 62 63 }64 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。