leetcode 91. Decode Ways

来源:互联网 发布:pp助手 mac 备份app 编辑:程序博客网 时间:2024/05/20 12:51
A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given an encoded message containing digits, determine the total number of ways to decode it.For example,Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12).The number of ways decoding "12" is 2.

两个状态,该点是一位还是两位,
恶心的是要注意,0的情况,0是一位不合法,01时两位不合法,这题AC率低主要是这两种情况的判断

public class Solution {    public int numDecodings(String s) {        if(s==null || s.length()==0) return 0;        int len = s.length();        int[] one = new int[len];        int[] two = new int[len];        if(s.charAt(0)=='0'){                one[0] = 0;        }else{            one[0] = 1;        }        two[0] = 0;        for(int i=1; i<len; i++){            if(s.charAt(i)=='0'){                one[i] = 0;            }else{                one[i] = one[i-1] + two[i-1];            }            if(s.charAt(i-1)=='0'){                two[i]=0;            }else{                int t = Integer.valueOf(s.substring(i-1,i+1));                if(t>26 || t <=0){                    two[i] = 0;                }else{                    if(i-2>=0){                        two[i] = one[i-2] + two[i-2];                    }else{                        two[i] = 1;                    }                }            }        }        return one[len-1]+two[len-1];    }}
原创粉丝点击