#include <bits/stdc++.h> using namespace std; int main() { std::string s; while (cin >> s) { int max1 = 0; string str, vt; regex reg("^(01)+0$"); for (char c : s) { if (c == '0') { if (!vt.empty() && vt.back() == '0') { if (regex_search(vt, reg) && vt.size() > max1) { max1 = vt.size(); str = vt; } vt.clear(); } } vt += c; } if (max1 > 0) { cout << str << endl; } else { cout << "-1" << endl; } } return 0; }为什么输入010输出结果-1
时间: 2024-02-10 09:29:45 浏览: 128
万能头文件#include&amp;lt;bits/stdc++.h&amp;gt; using namespace std;
在您提供的代码中,输入 `010` 的确会输出 `-1`。这是因为在您的代码中,当 `vt` 中只有一个字符 `'0'` 时,会清空 `vt`,而不进行进一步的判断。
为了解决这个问题,您可以在循环结束后再次进行一次判断,以确保最后一个字符 `'0'` 也被考虑在内。以下是修改后的代码:
```cpp
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
std::string s;
while (cin >> s) {
int max1 = 0;
string str, vt;
regex reg("^(01)+0$");
for (char c : s) {
if (c == '0') {
if (!vt.empty() && vt.back() == '0') {
if (regex_search(vt, reg) && vt.size() > max1) {
max1 = vt.size();
str = vt;
}
vt.clear();
}
}
vt += c;
}
// 进行最后一个字符 '0' 的判断
if (!vt.empty() && vt.back() == '0') {
if (regex_search(vt, reg) && vt.size() > max1) {
max1 = vt.size();
str = vt;
}
}
if (max1 > 0) {
cout << str << endl;
} else {
cout << "-1" << endl;
}
}
return 0;
}
```
在上述修改后的代码中,添加了一个额外的判断来处理最后一个字符 `'0'` 的情况。这样,当输入 `010` 时,会输出 `01`,而不是 `-1`。
希望这样可以解决您的问题。如果还有其他疑问,请随时提问。
阅读全文