难度3,出现频率4
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.思路:从末位倒着算,简单DP, 结果存在数组里。这道题没什么难点,但是要仔细,还要注意character和int的区别。
int numDecodings(string s) {
if(s.empty()) return 0;
int n = s.length();
int A[n];
if(s[n-1] == '0') A[n-1] = 0;
else A[n-1] = 1;
for(int i = n-2; i >= 0 ; i--){
if(s[i] == '0') A[i] = 0;
else if(s[i] == '1' || (s[i] == '2' && s[i+1] <= '6')) {
if(i == n - 2);
A[i] = A[i+1] + 1;
else A[i] = A[i+1] + A[i+2];
}
else A[i] = A[i+1];
}
return A[0];
}
No comments:
Post a Comment