leetCode.91. 解码方法
题目思路
题解
class Solution {
public:int numDecodings(string s) {int n = s.size();// dp 中f[0]一般不做使用,只是存一个初值1,表示默认由一种方案s = ' ' + s;vector<int> f( n + 1 );f[0] = 1;for ( int i = 1; i <= n; ++ i ) {// 一位数的判断if ( s[i] >= '1' && s[i] <= '9' ) f[i] += f[i - 1];// f[i - 1]的判断(两位数的判断必须保证 i > 1才会出现两位数 )if ( i > 1 ) {int t = (s[i - 1] - '0') * 10 + (s[i] - '0');if ( t >= 10 && t <= 26 ) {f[i] += f[i - 2];}}}return f[n];}
};