首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【牛客网】OR63 删除公共字符串

【牛客网】OR63 删除公共字符串

作者头像
修修修也
发布2024-04-01 15:11:49
发布2024-04-01 15:11:49
2340
举报

一.题目描述

描述:

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

输入描述:

每个测试输入包含2个字符串.

输出描述:

输出删除后的字符串.

示例1:

输入:They are students. aeiou 输出:Thy r stdnts.

题目详情:

二.题目思路

思路一:

首先,我们创建一个指针(*str),然后用该指针遍历检查整个arr1数组.

如果检查出该指针指向的字符属于arr2,则将*str后的字符逐一向前提一个字节.

如果检查出该指针指向的字符不属于arr2,则不进行任何操作,检查下一个字符.

直到遍历检查完arr1中的最后一个字符再将arr1打印出来即可.

思路图解如下:

思路二:

首先,对于在线oj题目,我们可以只专注于结果,即只要最后打印出的结果符合题目要求即可.

因此,我们可以先逐一打印第一个字符串中的内容.

然后,在打印的过程中判断该字符是否属于第二个字符串,

如果该字符属于第二个字符串,则不打印该字符,如果该字符不属于第二个字符串,则打印该字符.

思路图解如下:

三.解题代码

思路一完整解题代码:

根据上述思路,本题解题代码如下:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
void move(char*str)
{
    char*mov=str;
    while(*(mov)!='\0')
    {
        *mov=*(mov+1);//这步结束后,str指针中存储的将会是原本它后面的那个字符,因此move后str就不用再++了
        mov++;
    }
}

int main()
{
    char arr1[1000]={0};
    char arr2[1000]={0};
    gets(arr1);
    gets(arr2);
    char *str=arr1;
    char *arr1init=arr1;
    while(*str!='\0')
    {
        //判断是否为arr2字符
        if(strchr(arr2,*str)!=NULL)
        {
            //*str后所有字符前移
            move(str);
        }
        else
        //str后移
        str++;
    }
    while(*arr1init!='\0')
    {
        printf("%c",*arr1init);
        arr1init++;
    }
    return 0;
}

拷贝到牛客网测试运行:

成功通过:

思路二完整解题代码:

根据上述思路,本题解题代码如下:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main() {
    char arr1[100]={0};
    char arr2[100]={0};
    gets(arr1);
    gets(arr2);
    int i=0;
    int len=strlen(arr1);
    for(i=0;i<len;i++)
    {
        if(strchr(arr2, arr1[i])==NULL)
            printf("%c",arr1[i]);
    }
    return 0;
}

拷贝到牛客网测试运行:

成功通过:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.题目描述
    • 描述:
    • 输入描述:
    • 输出描述:
    • 示例1:
    • 题目详情:
  • 二.题目思路
    • 思路一:
    • 思路二:
  • 三.解题代码
    • 思路一完整解题代码:
    • 思路二完整解题代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档