L1-011 A-B

时间:2021-03-05 03:27:57

本题要求你计算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!
 
思路:这个题目有两种解法,推荐用解法二写......
 
解法一:直接两层循环比较字符后输出,暴力解就完事儿了,
 
 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char num[];
char num1[];
gets(num);
gets(num1);
int len=strlen(num);
int len1=strlen(num1);
for(int i=;i<len;i++)
{
int flag=;
for(int j=;j<len1;j++)
{
if(num[i]==num1[j])
{
flag=;
break;
}
}
if(flag==)
printf("%c",num[i]);
}
printf("\n");
return ;
}

解法二:建立一个用字符当下标的数组进行标记,再输出,

 #include<iostream>
#include<cstring>
using namespace std;
int main()
{
int book[];
memset(book,,sizeof(book));
string str1;
getline(cin,str1);
string str2;
getline(cin,str2);
for(int i=;i<str2.size();i++)
book[str2[i]-' ']=;//标记
for(int i=;i<str1.size();i++)
{
if(book[str1[i]-' ']==)
cout<<str1[i];
}
return ;
}