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

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

描述:

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”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;
}

拷贝到牛客网测试运行:

成功通过:


 


相关文章
|
开发框架 .NET C#
c#数组补充
c#数组的几个简单的补充
42 0
|
2月前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
34 1
|
6月前
|
C语言
【C语言刷题系列】删除公共元素
【C语言刷题系列】删除公共元素
|
6月前
|
存储 算法 数据挖掘
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
|
6月前
|
算法 Java
力扣经典150题第二十三题:找出字符串中第一个匹配项的下标
力扣经典150题第二十三题:找出字符串中第一个匹配项的下标
29 0
|
7月前
|
算法
六六力扣刷题字符串之找出字符串中第一个匹配项的下标
六六力扣刷题字符串之找出字符串中第一个匹配项的下标
61 0
|
算法
LeetCode150道面试经典题--找出字符串中第一个匹配项的下标(简单)
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。
46 0
算法强化每日一题--删除公共字符
算法强化每日一题--删除公共字符
leetcode 1002 查找共用字符
leetcode 1002 查找共用字符
77 0
|
机器学习/深度学习 算法
每日算法刷题Day10-字符串最大跨距、最长公共字符串后缀
⭐每日算法题解系列文章旨在精选重点与易错的算法题,总结常见的算法思路与可能出现的错误,与笔者另一系列文章有所区别,并不是以知识点的形式提升算法能力,而是以实战习题的形式理解算法,使用算法。
249 0