AcWing 3544. 寻找变化前的01序列
原题链接
简单
作者:
王杜杜
,
2025-01-16 21:35:10
,
所有人可见
,
阅读 1
C++ 代码
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
string handle(const string& str){
int count = 0; // 用于计数连续1的个数
int len = str.size();
string res; // 用于存放result
bool flag = false; // true : 前一个字符为'1',否则为'0'
for(int i = 0; i < len; i++){
if(str[i] == '1'){
res += str[i];
if(flag) // 若前一个字符也是'1'
count++;
else{
count = 1;
flag = true;
}
if(count == 5){
i++; // 连续5个1,下一个字符一定是0,所以直接跳过就好
count = 0;
}
}else{
res += str[i];
flag = false;
}
}
return res;
}
int main()
{
int N;
cin >> N;
for(int i = 0; i < N; i++){
string str;
cin >> str;
string res = handle(str);
cout << res << endl;
}
return 0;
}