Decode Ways
题目:
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.
c++实现:
#include <string> #include <iostream> using namespace std; class Solution { public: int numDecodings(string s) { int length = s.length(); int i; if(length == 0)return 0; int arr[length+1]; if(s[0] == '0')return 0; arr[0] = 1; arr[1] = 1; for(i = 2; i <= length; i++){ arr[i] = 0; if( '0' == s[i - 1] ){ if(s[i - 2] == '1' || s[i - 2] == '2'){ arr[i] += arr[i-2]; } }else{ arr[i] += arr[i-1]; if(s[i-2] != '0'){ int tmp = (s[i-2] - 48) * 10 + s[i - 1] - 48; if( tmp > 0 && tmp < 27){ arr[i] += arr[i-2]; } } } } return arr[length]; } }; int main() { Solution s = Solution(); cout << s.numDecodings("101") << endl; return 1; }