您的位置:首页 > 其它

字符串处理之HDLC串处理

2017-02-07 14:46 162 查看
寻找变化前01序列

问题描述
给你一个01序列,HDLC协议处理的话,如果出现连续的5个1会补1个0。例如1111110,会变成11111010。
现在给你一个经过HDLC处理后的01序列,你需要找到HDLC处理之前的01序列。
例如给你11111010
你需要输出1111110

Input
输入正整数N,表示N例测试。接着输入N组数据,每组输入经过HDLC处理过的01序列(长度小于100)。
Output
对每组输入数据,输出HDLC处理前的01序列。

Sample Input
2
11111010
1111100
Sample Output
1111110
111110

思路:
   
北邮的一个复试上机题,实质上就是去除字符串中的某个特定字符,大体思路是统计1出现的次数,当1连续出现5次时,下一个字符就不再输出,并将统计变量cnt置0。在统计过程中,中间一旦出现不是1的字符,统计变量cnt也置为0。

AC代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxn 105
using namespace std;
char str[maxn];
int main() {

int m;//测试样例的数量
scanf("%d",&m);
while(m--){
scanf("%s",str);
int cnt = 0;
for(int i=0;i<strlen(str);i++)
{

if(str[i] == '1')
{
printf("%c",str[i]);
cnt++;
if(cnt==5)
{
i++;
cnt = 0;
}
}
else
{
printf("%c",str[i]);
cnt=0;
}
}

printf("\n");

}
return 0;

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息