3544. 寻找变化前的01序列
作者:
哥哥姐姐给我点点赞吧
,
2021-05-24 16:40:59
,
所有人可见
,
阅读 296
给你一个 01 序列,HDLC 协议处理的话,如果出现连续的 5 个 1 会补 1 个 0
例如 1111110
,会变成 11111010。
现在给你一个经过 HDLC 处理后的 01序列,你需要找到 HDLC 处理之前的 01序列。
例如给你 11111010,你需要输出 1111110
。
输入格式
第一行一个整数 N,表示共有 N组测试数据。
每组数据占一行,包含一个 01序列。
输出格式
每组数据输出一行结果,为处理之前的 01序列。
数据范围
1≤N≤100,01 序列长度不超过 100。
输入样例:
2
11111010
1111100
输出样例:
1111110
111110
c++代码
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
void test(string &op)
{
int k=0;
for(int i=0;i<op.size();i++)
{
if(op[i]=='1')
{
k++;
if(k==5)
{
op.erase(i+1,1);
k=0;
}
}
else
{
k=0;
}
}
}
void print(string x)
{
for(int i=0;i<x.size();i++) printf("%c",x[i]);
puts("");
}
int main()
{
cin>>n;
while(n--)
{
string op;
cin>>op;
test(op);
print(op);
}
return 0;
}