PTA L1-011 A-B (20分)

题目描述:

本题要求你计算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!

解题报告:

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;
}
发布了109 篇原创文章 · 获赞 2 · 访问量 4586

猜你喜欢

转载自blog.csdn.net/jun_____/article/details/103979228