题目:
解答:
这是一道比较麻烦的动态规划题。
递推,根据不同的s[i]和s[i-1].
a[i] = a[i-1] + a[ i-2]
或者
a[i] = a[i-1]
或者
a[i] = a[i-2]
class Solution {
public:
int numDecodings(string s) {
int a[10000];
if (s.length() == 0)
return 0;
if (s[0] == '0')
return 0;
else
a[0] = 1;
//首先处理第一、二个字符
if (s[1] == '0')
{
if (s[0] == '1' || s[0] == '2')
a[1] = 1;
else
return 0;
}
else
{
if (((s[0] - '0') * 10 + s[1] - '0') > 26)
a[1] = 1;
else
a[1] = 2;
}
//递推
for (int i = 2; i < s.length(); i++)
{
if(s[i] =&