91. Decode Ways (Array; DP)
A message containing letters from A-Z
is being encoded to numbers using the following mapping:
'A' -> 1 'B' -> 2 ... 'Z' -> 26
Given 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.
class Solution { public: int numDecodings(string s) { if(s.length()== 0 || s[0] == '0') return 0; int* dp = new int [s.length()+1]; dp[0] = 1;dp[1]=1; for (int i = 1; i < s.length(); i++) { if(s[i] == '0') { if(s[i-1] != '1' && s[i-1] != '2') return 0; else dp[i+1] = dp[i-1]; } else if(s[i-1] == '1' || (s[i] <= '6' && s[i-1] == '2')) { dp[i+1] = dp[i] + dp[i-1]; } else dp[i+1] = dp[i]; } return dp[s.length()]; } };