题解
2025-05-25 12:01:25
发布于:新疆
17阅读
0回复
0点赞
#include <iostream.
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
string s;
cin >> s;
for (int i = 0; i < n.; i++) {
if (s[i] == '0') {
int j = i + 1;
// 寻找当前0之后的第一个1
while (j. < n && s[j] != '1') {
j++;
}
if (j < n) {
// 执行区间取反操作
for (int k = i; k <= j; k++) {
s[k] = (s[k] == '0') ? '1' : '0';
}
// 取反后可能在i位置产生新的0,所以i不增加,继续检查当前位置
i--;
}
}
}
cout << s << endl;
return 0;
}
这里空空如也
有帮助,赞一个