1050 String Subtraction (20分)
思路
这题也没什么好说的,用getline和find就能简单解决问题了。虽然我对于string有insert却没有remove还是蛮困惑的。
顺带一提测点2的s2里面似乎有大量非字母字符,其中包括空格。
代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1, s2;
bool erase[11000]{ false };
getline(cin, s1);
getline(cin, s2);
int i, j;
i = 0;
while (i <= s2.size())
{
j = s1.find(s2[i]);
if (j == -1)
i++;
else
{
s1[j] = 1;//这里是选用了一个几乎不可能出现的ascii码做替换字符。其实用测点中没有用到的'`'也可以通过,只不过逻辑上不算解出了这道题——但是论实际使用的话大概还是我这种乱用不知道的ascii码的行为更危险一点。大概。
erase[j] = true;
}
}
for (i = 0; i <= s1.size(); i++)
if (!erase[i])
cout << s1[i];
}
题目
Given two strings S
1
and S
2
, S=S
1
−S
2
is defined to be the remaining string after taking all the characters in S
2
from S
1
. Your task is simply to calculate S
1
−S
2
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
and S
2
, 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 S
1
−S
2
in one line.
Sample Input:
They are students.
aeiou
Sample Output:
Thy r stdnts.