PAT甲级真题1050
链接:PAT甲级真题1050
给定两个字符串 S1 和 S2,S=S1−S2 定义为将 S1 中包含的所有在 S2 中出现过的字符删除后得到的字符串。
你的任务就是计算 S1−S2。
输入格式
共两行,第一行包含字符串 S1,第二行包含字符串 S2。
输出格式
输出共一行,表示 S1−S2 的结果。
数据范围
两个给定字符串的长度都不超过 10^4。
输入样例:
They are students. aeiou
输出样例:
Thy r stdnts.
解题思路
- 只需要判断S1中的字符是否在S2中即可
- 一开始我是用函数来判断是否存在,但是超时,所以选用unordered_map来判断
- 代码一看就懂的
AC代码
#include <iostream> #include <cstring> #include <algorithm> using namespace std; string str,noStr,ansStr; int main() { getline(cin,str); getline(cin,noStr); unordered_map<char,int> noStrstr; for (int i = 0; i < noStr.size(); i ++ ) { noStrstr[noStr[i]]++; } for (int i = 0; i < str.size(); i ++ ) { if(!noStrstr[str[i]])ansStr=ansStr+str[i]; } cout<<ansStr<<endl; return 0; }