6/20/2014

141. Decode Ways

public class Solution {
    public int numDecodings(String s) {
        int n = s.length();
       
        if (n==0) return 0;
       
        int[] dp = new int[n+1];
       
        dp[0] = 1;
        if (isValid(s.substring(0,1))) dp[1] = 1;
        else dp[1] = 0;
       
        for (int i=2; i<=n; i++) {
            if (isValid(s.substring(i-1,i))) dp[i] = dp[i-1];
            if (isValid(s.substring(i-2,i))) dp[i] += dp[i-2];
        }
       
        return dp[s.length()];
    }
   
    public boolean isValid(String s) {
        if (s.charAt(0)=='0') return false;
        int code = Integer.parseInt(s);
        return code>=1 && code<=26;
    }
}

没有评论:

发表评论