PAT 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.
输入格式:
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.
输出格式: For each test case, print S1−S2 in one line.
输入样例:
They are students.
aeiou
输出样例:
Thy r stdnts.
题目分析:数组hash的使用,因为题目要求s1-s2,因此开辟一个hash数组用来存放s2中出现的字符,然后遍历s1的所有字符,如果在hash数组中出现过就不输出。
注意:题目给出的字符串可能包含空格,因此不能使用cin进行输入,建议使用getline()进行输入。
AC代码:
#include <iostream>
#include <string>
using namespace std;
const int maxn = 128;
bool is_appear[maxn]={false};
int main(){
string s1,s2;
getline(cin, s1);
getline(cin, s2);
for(int i=0; i<s2.length(); ++i){
is_appear[s2[i]] = true;
}
for(int i=0; i<s1.length(); ++i){
if(!is_appear[s1[i]])
cout<<s1[i];
}
return 0;
}