简单。就不解释了。不加点中文会被认为advertise...
-
class Solution {
-
public:
-
int numDecodings(string s) {
-
if(s.empty()) return 0;
-
if(s[0]=='0') return 0;
-
if(s.length()<2) return 1;
-
vector<int> num(s.length()+1,1);
-
for(int i=1;i<s.length();i++)
-
{
-
if('0'==s[i])
-
{
-
if('0'==s[i-1]||s[i-1]>'2') return 0;
-
else num[i+1]=num[i-1];
-
continue;
-
}
-
int val=10*(s[i-1]-'0')+s[i]-'0';
-
if(val>10&&val<=26&&val!=20) num[i+1]=num[i]+num[i-1];
-
else if(val==10||val==20) num[i+1]=num[i-1];
-
else num[i+1]=num[i];
-
}
-
return num[s.length()];
-
}
-
};
阅读(204) | 评论(0) | 转发(0) |