题目描述
1050 String Subtraction (20分)
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-S2
in one line.
Sample Input:
They are students.
aeiou
Sample Output:
Thy r stdnts.
求解思路
将s2中出现的字符映射到哈希表中,然后在s1中开始遍历哈希表,如果当前s1中的字符曾在哈希表中出现过,那么则不输出。
代码实现(AC)
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
const int maxn=256;
int hashTable[maxn]={0};
int main()
{
string s1,s2;
getline(cin,s1);
getline(cin,s2);
for(int i=0;i<s2.length();i++)
hashTable[s2[i]]=1;
for(int i=0;i<s1.length();i++)
{
if(!hashTable[s1[i]]) cout<<s1[i];
}
return 0;
}