Decode Ways

来源:互联网 发布:决战武林神兵5升6数据 编辑:程序博客网 时间:2024/06/15 23:39

题意:

将A,B,C。。。Z映射到1,2,。。。26

然后给定一个数字,比如12,可以当成AB,也可以当成L,有两种映射方法,返回2

分析:

动态规划:

t[i] 表示当前前i个单词中的映射方法,等于前i-1个单词的映射方法 + 前i-2个单词的映射方法;当然前提得是在最后1个数字可以有效映射以及最后两个数字可以有效映射

参考代码如下:

http://www.programcreek.com/2014/06/leetcode-decode-ways-java/

public int numDecodings(String s) {    if(s==null||s.length()==0||s.equals("0"))        return 0;      int[] t = new int[s.length()+1];    t[0] = 1;     //if(s.charAt(0)!='0')    if(isValid(s.substring(0,1)))        t[1]=1;    else        t[1]=0;     for(int i=2; i<=s.length(); i++){        if(isValid(s.substring(i-1,i))){            t[i]+=t[i-1];        }         if(isValid(s.substring(i-2,i))){            t[i]+=t[i-2];        }    }     return t[s.length()];} public boolean isValid(String s){    if(s.charAt(0)=='0')        return false;    int value = Integer.parseInt(s);    return value>=1&&value<=26;}




0 0