题目描述:
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A−B的结果字符串。
输入样例:
I love GPLT! It's a fun game!
aeiou
输出样例:
I lv GPLT! It's fn gm!
解题思路:
从B中拿出字符一个一个和A中的对比,相同就删除A中的字符,最后打印输出A.
注意事项:
1.不可用cin,因为当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符).一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取.因此我们要使用getline.
2.使用迭代器删除时要注意迭代器的自动前移.
代码实现:
#include <iostream>
using namespace std;
int main() {
string A,B;
getline(cin,A);
getline(cin,B);
string::iterator it;
for (int i = 0; i < B.size();i++) {
for (it=A.begin(); it!=A.end(); it++) {
if (B[i]==*it){
A.erase(it);
it--;//删除后it会自动前移,防止漏掉某个字符
}
}
}
cout<<A<<endl;
}