Kpril 2022-03-09 22:18 采纳率: 100%
浏览 38
已结题

有一个测试点过不了,如何解决?

问题遇到的现象和发生背景

这里是题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805130426171392
这里是题目截图:

img

img

这里是代码段:

#include <stdio.h>
#include <string.h>
int main()
{
    char a[10001],b[10001];
    gets(a);
    gets(b);
    int i,j,len=strlen(a);
    for(i=0;i<len;i++)
        for(j=0;j<strlen(b);j++)
            if(a[i]==b[j])
            {
                strcpy(a+i,a+i+1);//该字符的后一位作为起始地址复制到当前位置,实现剪切
                len--;
                j=-1;
            }
    puts(a);
    return 0;
}

思路是将字符串a中字符提出挨个与b字符串中字符比对,若相同,则在字符串a中剪切掉那个字符,同时a字符串长度缩减

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-03-10 14:11
    关注

    供参考:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char a[10001], b[10001], c[10001], t[500] = { 0 };
        int i, cnt = 0;
        gets(a);
        gets(b);
        for (i = 0; i < (int)strlen(b); i++)
        {
            t[b[i]]++;
        }
        for (i = 0; i < (int)strlen(a); i++)
        {
            if (t[a[i]] == 0)
            {
                c[cnt++] = a[i];
            }
        }
        c[cnt] = '\0';
        printf("%s\n", c);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 修改了问题 3月10日
  • 创建了问题 3月9日