一、题目描述二、算法分析三、代码12345678910111213141516171819202122class Solution {public: int numDecodings(string s) { int n = s.size(); vector<int> dp(n + 1, 0); dp[0] = 1; for(int i = 1; i <= n; ++i) { //单字符解析:当前s[i - 1]字符 非零 if(s[i - 1] != '0') { dp[i] = dp[i - 1]; } //双字符解析:当前字符s[i - 1]+前一个字符s[i - 2] if(i > 1 && s[i - 2] != '0' && 10 * (s[i - 2] - '0') + s[i - 1] - '0' <= 26) { dp[i] += dp[i - 2]; } } return dp[n]; }};时间复杂度:O(n)空间复杂度:O(n)