用c++写出以下的完整程序class Solution { public: int numDecodings(string s) { if (s[0] == '0') return 0; vector<int> dp(s.size()+1); dp[0]=1;dp[1]=1; for (int i =1; i < s.size(); i++) { if (s[i] == '0')//1.s[i]为0的情况 if (s[i - 1] == '1' || s[i - 1] == '2') //s[i - 1]等于1或2的情况 dp[i+1] = dp[i-1];//由于s[1]指第二个下标,对应为dp[2],所以dp的下标要比s大1,故为dp[i+1] else return 0; else //2.s[i]不为0的情况 if (s[i - 1] == '1' || (s[i - 1] == '2' && s[i] <= '6'))//s[i-1]s[i]两位数要小于26的情况 dp[i+1] = dp[i]+dp[i-1]; else//其他情况 dp[i+1] = dp[i]; } return dp[s.size()]; } };
时间: 2024-02-06 22:04:28 浏览: 65
这是一个完整的 C++ 程序,实现了一个名为 Solution 的类,其中包含一个名为 numDecodings 的函数,用于解析字符串并计算编码方案数量。
需要注意的是,该程序依赖于 string 和 vector 的头文件,因此在使用前需要包含这两个头文件。以下是完整的程序代码:
```c++
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
int numDecodings(string s) {
if (s[0] == '0') return 0;
vector<int> dp(s.size()+1);
dp[0]=1;dp[1]=1;
for (int i =1; i < s.size(); i++) {
if (s[i] == '0')
if (s[i - 1] == '1' || s[i - 1] == '2')
dp[i+1] = dp[i-1];
else
return 0;
else
if (s[i - 1] == '1' || (s[i - 1] == '2' && s[i] <= '6'))
dp[i+1] = dp[i]+dp[i-1];
else
dp[i+1] = dp[i];
}
return dp[s.size()];
}
};
```
阅读全文