Using DP. Actually this solution still has the space to improve: because the current state is only related with two indexes before, so rolling DP will improve the space to O(1).
Solution:
# T:O(n) S:O(n) class Solution: # @param s, a string # @return an integer def numDecodings(self, s): if s=="" or s[0]=='0': return 0 dp=[1,1] for i in range(2,len(s)+1): if 10 <=int(s[i-2:i]) <=26 and s[i-1]!='0': dp.append(dp[i-1]+dp[i-2]) elif int(s[i-2:i])==10 or int(s[i-2:i])==20: dp.append(dp[i-2]) elif s[i-1]!='0': dp.append(dp[i-1]) else: return 0 return dp[len(s)]Run Time: 76 ms
No comments:
Post a Comment