团体程序设计天梯赛-练习集——L1-011 A-B

前言

相对来说,这道题就比较简单了,但是这道题整整有20分呢,巨肥

L1-011 A-B

本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。

输入格式:

输入在2行中先后给出字符串A和B。两字符串的长度都不超过10的4次方 ,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。

输出格式:

在一行中打印出A−B的结果字符串。

输入样例:

I love GPLT!  It's a fun game!
aeiou

输出样例:

I lv GPLT!  It's  fn gm!

思路

OK,拿到这道题首先有一点点的懵逼,因为一开始输入有点问题,博主写代码就是一种无脑的方式,习惯了用一种方式,就一直这么干,然后用scanf输入就出现了问题,运行输出了一下,我靠,只输出了一个 I love,我就想,不能这么干,然后换掉了scanf,用了gets,因为gets可以输入空格,而scanf不可以。
然后呢,就开始考虑,怎么能删除掉下面的那些字符呢,读题的时候从上往下看,真的是没有思路,怎么办呢,不妨从下往上看看试试,我们可以先把需要删除掉的那些字符做一个标记,然后再第一行字符串里面遍历,没有被标记到的字符就按顺序输出就好了。
思路已经定好了,那我们就来看看代码

代码

#include 
#include 
int main()
{
    char num1[10001] = {0};
    char num2[10001] = {0};//两行字符串
    gets(num1);
    gets(num2);//输入
    int i;
    char num[256] = {0};//把所有字符存放到里面
    for(i = 0; i < strlen(num2);i++)//遍历第二行字符串
        num[num2[i]]=1;//做标记
    for(i = 0;i < strlen(num1);i++)//遍历第一行字符串
        if(num[num1[i]] == 0)//判断是否做了标记
            printf("%c",num1[i]);//输出
}

真的,就这么点代码,谁看不迷糊,呼呼干吧那就

以上所有代码均为自己编写,本人水平有限,如果有哪里出错或者有更好的解法可以与我私信或在评论区里进行讨论

上一题:团体程序设计天梯赛-练习集——L1-010 比较大小

下一题:团体程序设计天梯赛-练习集——L1-012 计算指数

你可能感兴趣的:(GPLT天梯赛,算法,c语言,c++,数据结构,c#)