Given two strings S 1 S_1 S1 and S 2 S_2 S2, S = S 1 − S 2 S=S_1−S_2 S=S1−S2 is defined to be the remaining string after taking all the characters in S 2 S_2 S2 from S 1 S_1 S1. Your task is simply to calculate S 1 − S 2 S_1 −S_2 S1−S2 for any given strings. However, it might not be that simple to do it fast.
Input Specification:
Each input file contains one test case. Each case consists of two lines which gives S 1 S_1 S1 and S 2 S_2 S2, respectively. The string lengths of both strings are no more than 1 0 4 10^4 104. It is guaranteed that all the characters are visible ASCII codes and white space, and a new line character signals the end of a string.
Output Specification:
For each test case, print S 1 − S 2 S_1−S_2 S1−S2 in one line.
Sample Input:
They are students.
aeiou
Sample Output:
Thy r stdnts.
Solution:
// Talk is cheap, show me the code
// Created by Misdirection 2021-08-18 13:48:04
// All rights reserved.
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main(){
unordered_map<char, int> map;
string s1, s2;
getline(cin ,s1);
getline(cin ,s2);
int len2 = s2.length();
for(int i = 0; i < len2; ++i) map[s2[i]] = 1;
for(int i = 0; i < s1.length(); ++i)
if(map[s1[i]] == 1) s1.erase(i--, 1);
cout << s1 << endl;
return 0;
}