Friday, September 19, 2014

Leetcode: Decode Ways @Python

class Solution:
    # @param s, a string
    # @return an integer
    def numDecodings(self, s):
        n=len(s)
        dp=[0]*(n)
        if n==0: return 0
        if s[0]!='0':
            dp[0]=1
        else:
            return 0
        for i in range(1,n):
            if s[i]=='0':
                if s[i-1] in '12':
                    if i<2:
                        dp[i]=1
                    else:
                        dp[i]=dp[i-2]
                else:
                    return 0
            elif s[i-1]=='0':
                dp[i]=dp[i-1]
            else:
                if int(s[i-1:i+1])<=26:
                    if i<2:
                        dp[i]=2
                    else:
                        dp[i]=dp[i-1]+dp[i-2]
                else:
                    dp[i]=dp[i-1]
        return dp[n-1]

No comments :

Post a Comment