题目描述:
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A−B的结果字符串。
输入样例:
I love GPLT! It's a fun game!
aeiou
输出样例:
I lv GPLT! It's fn gm!
解题报告:
1:双重循环的暴力法就不说了,相信都会=.=。其实这题还是可以利用查字典的方法进行标记。
2:整个ASCII码好像也就255个吧(好像是=.=),空间好像很充裕。所以可以开个300的数组,将B中的字符在数组中打标记。
3:好像不支持gets,但可以用getline代替=.=
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1e4+10;
string A, B;
ll dic[300];//字典数组,也是标记数组
int main(){
getline(cin, A);getline(cin, B);
ll len_a = A.size(), len_b = B.size();
for(ll i=0; i<len_b; ++i)dic[B[i]]++;
for(ll i=0; i<len_a; ++i)
if(!dic[A[i]])cout << A[i];
printf("\n");
return 0;
}