给以下代码中添加这个条件:每行一个字符串,最后一个字符串末尾加上“.”作为结束标志,如果有多条消息,在中间每条消息的字符串末尾加上“;”作为消息之间的分割标记。#include <iostream> #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()]; } }; int main() { Solution solution; string s="226"; int a = solution.numDecodings(s); cout << "The answer is: " << a << endl; return 0; }
时间: 2024-01-22 07:02:39 浏览: 54
C语言基础-字符串操作之最后一个单词的长度.zip
可以在代码中添加一个字符串变量,用于存储最终的消息字符串。在每次迭代中,将当前字符串加入到消息字符串中,并在末尾加上分号。最后再加上结束标志。
修改后的代码如下:
```
#include <iostream>
#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;
string message = ""; // 新增的消息字符串变量
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];
message += s[i-1]; // 加入当前字符串
message += ";"; // 加入分号
}
message += s[s.size()-1]; // 加入最后一个字符串
message += "."; // 加入结束标志
cout << "Message: " << message << endl; // 输出消息字符串
return dp[s.size()];
}
};
int main() {
Solution solution;
string s="226";
int a = solution.numDecodings(s);
cout << "The answer is: " << a << endl;
return 0;
}
```
阅读全文