class Solution {
public:
int numDecodings(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(s.size()==0)
return 0;
vector<int> dp(s.size()+1,0);
dp[0]=1;//"10"时dp[2]=dp[0]=1
if((s[0]-'0')>=1)//结果dp[]的下标从1开始
dp[1]=1;
for(int i=2;i<=s.size();i++)
{
if(s[i-1]-'0'>=1)//s[]的下标从0开始
dp[i]+=dp[i-1];
int tmp=(s[i-2]-'0')*10+(s[i-1]-'0');
if(tmp<=26&&tmp>=10)
dp[i]+=dp[i-2];
}
return dp[s.size()];
}
};