当前位置: 代码迷 >> 综合 >> PAT 团体程序设计天梯赛-练习集 L1-011 A-B (20分)
  详细解决方案

PAT 团体程序设计天梯赛-练习集 L1-011 A-B (20分)

热度:46   发布时间:2024-01-25 14:33:38.0

本题要求你计算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!
利用 map<char,int>1. 先扫一遍字符串a,将出现的频率记录在map中2. 再扫一遍字符串b,将b中字母在map中记录的频率置为03. 扫一遍字符串a,如果a[i]在map中出现的频率不为零的话就输出该字符
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std;int main(){map<char,int> hash_map;string a,b;getline(cin,a);getline(cin,b);int sa = a.size();int sb = b.size();for (int i = 0; i < sa; ++i)hash_map[a[i]]++;for (int i = 0; i < sb; ++i)hash_map[b[i]] = 0;for (int i = 0 ; i < sa; ++i)if (hash_map[a[i]])printf("%c",a[i]);return 0;
}

 

  相关解决方案