网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

位填充与位去除的实现

更新时间:2026年03月27日   作者:spoto   标签(Tag):

比特填充是一种在数据中插入额外比特的过程。0一旦遇到该帧序列时……5连续的1的给定一个数组,arr[]尺寸/大小N由…组成0以及1个,任务是在进行位填充之后,返回一个数组。

示例:

输入:N = 6,arr[] = {1, 1, 1, 1, 1, 1}
输出结果:1111101
说明:在遍历数组的过程中,在给定的数组的第四个索引之后,连续出现了5个1。因此,在第四个索引之后的位置上插入了一个零位。

输入:N = 6,arr[] = {1, 0, 1, 0, 1, 0}
输出结果:101010

接近方式:其目的是检查给定的数组是否包含5个连续的数值。1的请按照以下步骤来解决问题:

  • 初始化数组brr[]该变量用于存储填充后的数组。此外,还需要创建一个名为“count”的变量,用于记录连续1的个数。
  • 使用变量来在循环中进行遍历操作。i在范围内[0, N]并执行以下任务:
    • If arr[i] is 1然后,继续检查下一个内容。4如果它们也被设置为“1”的话,那么就在将所有5个“1”位插入到数组之后,再插入一个“0”位。brr[].
    • 否则,请输入该值。arr[i]进入数组中brr[].

以下是上述方法的实现方式:

C++
// 采用上述方法的C++程序#include<bits/stdc++.h>#include<iostream>使用命名空间标准;// 用于比特填充的函数无效/无意义bitStuffing(整数N,整数arr[]){// 存储了填充后的数组整数呃……[30];// 用于遍历数组的变量整数i,j,k;i=0;j=0;// 循环遍历范围[0, N)当…的时候(i<N){// 如果当前位被设置的话if(arr[i]==1){// 存储连续1的个数整数计数=1;// 将其插入到数组 brr[] 中呃……[j]=arr[i];// 循环以进行验证// 接下来的5位为了(k=i+1;arr[k]==1&&k<N&&计数<5;k++){j++;呃……[j]=arr[k];计数++;// 如果连续有5个位被设置// 需要插入一个0位。if(计数==5){j++;呃……[j]=0;}i=k;}}// 否则,将 arr[i] 插入到数组中。// 数组 brr[]否则{呃……[j]=arr[i];}i++;j++;}// 打印答案为了(i=0;i<j;i++)cout<<呃……[i];}// 驱动程序代码整数主要/核心(){整数N=6;整数arr[]={1,1,1,1,1,1};bitStuffing(N,arr);返回0;}// 这段代码由 target_2 贡献而来。
C
// 采用上述方法的C语言程序#include<stdio.h>#include<string.h>// 用于位填充的函数无效/无意义bitStuffing(整数N,整数arr[]){// 存储了填充后的数组整数呃……[30];// 用于遍历数组的变量整数i,j,k;i=0;j=0;// 循环遍历范围[0, N)内的所有元素。(i<N){// 如果当前位被设置的话if(arr[i]==1){// 存储连续1的个数整数计数=1;// 将其插入到数组 brr[] 中呃……[j]=arr[i];// 循环以进行验证// 接下来的5位为了(k=i+1;arr[k]==1&&k<N&&计数<5;k++){j++;呃……[j]=arr[k];计数++;// 如果连续有5个位被设置// 需要插入一个0位。if(计数==5){j++;呃……[j]=0;}i=k;}}// 否则,将 arr[i] 插入到数组中。// 数组 brr[]否则{呃……[j]=arr[i];}i++;j++;}// 打印答案为了(i=0;i<j;i++)printf("%d",呃……[i]);}// 驱动程序代码整数主要/核心(){整数N=6;整数arr[]={1,1,1,1,1,1};bitStuffing(N,arr);返回0;}
Java
// 采用上述方法的Java程序 GFG{// 用于位填充的函数静态的无效/无意义bitStuffing(整数N,整数arr[]){// 存储了填充后的数组整数[]呃……=新的整数[30];// 用于遍历数组的变量整数i,j,k;i=0;j=0;// 循环遍历从0到N-1的范围。(i<N){// 如果当前位被设置的话if(arr[i]==1){// 存储连续1的个数整数计数=1;// 将其插入到数组 brr[] 中呃……[j]=arr[i];// 循环以进行验证// 接下来的5位为了(k=i+1;k<N&&arr[k]==1&&计数<5;k++){j++;呃……[j]=arr[k];计数++;// 如果连续有5个位被设置// 在插入一个0位之后,就可以实现相应的功能了。if(计数==5){j++;呃……[j]=0;}i=k;}}// 否则,将 arr[i] 插入到数组中。// 数组 brr[]否则{呃……[j]=arr[i];}i++;j++;}// 打印答案为了(i=0;i<j;i++)系统/体系.出去/离开.printf("%d",呃……[i]);}// 驱动程序代码公开的静态的无效/无意义主要/核心(字符串[]参数/变量){整数N=6;整数arr[]={1,1,1,1,1,1};bitStuffing(N,arr);}}// 这段代码由 shikhasingrajput 贡献而来。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料