Given two strings S1 and S2, S=S1−S2 is defined to be the remaining string after taking all the characters in S2 from S1. Your task is simply to calculate 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 S1 and S2, respectively. The string lengths of both strings are no more than 10^4. 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 S1−S2in one line.
Sample Input:
They are students.
aeiou
Sample Output:
Thy r stdnts.
题意:输入两个字符串,删掉第一个字符串中在第二个字符串中出现的字符
思路:用一个长度为256的数组纪录第二个字符串中出现的字符,一个坑点就是数组长度必须最好设置成100010这么大,刚设置成10010的话只有14分,看了柳神的博客才改过来,题目要求是10的4次方就行了。。但是这个地方可能是测试系统的原因,要求长度大一点。
#include<iostream>
#include<cstdio>
#include<stack>
#include<queue>
#include<vector>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<map>
using namespace std;
bool flag[256] = {false};
char s1[100100];
char s2[100100];
int main() {
cin.getline(s1,100000);
cin.getline(s2,100000);
int length1 = strlen(s1);
int length2 = strlen(s2);
for(int i = 0;i < length2;i++) {
flag[s2[i]] = true;
}
for(int i = 0;i < length1;i++) {
if(!flag[s1[i]]) {
cout << s1[i];
}
}
return 0;
}