adcbiss1234 2021-11-22 12:36 采纳率: 100%
浏览 30
已结题

检测数组s1[i]和s2[i]是否相等,相等则删除si的

这段函数想让他检测s1和s2的是否相等,相等就删掉;请问这样做可行吗?目前没法检查,不过感觉理论和结构无误
求一个聪明帅气可爱多金头发旺盛美丽聪慧机智宽容友好善良的大佬回答

int squeeze(int s1[], int s2[]) {
 int i, j, c;
 for (i = 0, j = 0; s1[i] != '\0' && s2[j] != '\0'; j++, i++) {
  c=s1[i] ;
  if (s1[i] == s2[i]) {
   --i;
  }
  else {
   s1[j] = c;
  }
 }
}

可能还缺一个,删除多余的元素?

  • 写回答

1条回答 默认 最新

  • 关注

    s1[i] != '\0' && s2[j] != '\0' 这么写不对,char数组才这么写。你是要删除两个数组中的相同数据吗?只要相同,s1和s2中都删还是只从1个数组中删?
    参考如下代码:

    //n1是数组s1元素个数,n2是数组s2中元素个数,如果两个数组有同样多的数据,可以直传1个长度
    int squeeze(int s1[],int n1,int s2[],int n2) 
    {
        int i,j;
        for(i=0;i<n1 && i<n2;)
        {
            if (s1[i]== s2[i])
            {
                //从s1中删除
                for(j=i;j<n1-1;j++)
                    s1[j] = s1[j+1];
                //从s2中删除
                for(j=i;j<n2-1;j++)
                    s2[j] = s2[j+1];
            }else
                i++;
        }
        return 1;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 创建了问题 11月22日