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

举报
修修修也 发表于 2024/07/25 23:54:18 2024/07/25
【摘要】 ​ 一.题目描述牛客网题目链接:删除公共字符 _ 牛客题霸 _ 牛客网 描述:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串.输出描述:输出删除后的字符串.示例1:输入:They are students.aeiou输...

 

.题目描述

牛客网题目链接:删除公共字符 _ 牛客题霸 _ 牛客网

描述:

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

输入描述:

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

输出描述:

输出删除后的字符串.

示例1:

输入:They are students.
aeiou

输出:Thy r stdnts.

题目详情:

编辑


.题目思路

思路一:

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

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

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

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

思路图解如下:

编辑


 思路二:

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

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

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

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

思路图解如下:

编辑


.解题代码

思路一完整解题代码:

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

#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;

}

拷贝到牛客网测试运行:

编辑

成功通过:

编辑


思路二完整解题代码:

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

#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;

}

拷贝到牛客网测试运行:

编辑

成功通过:

编辑


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。