测试点1、2就是挨着的要删的字符,删除的时候一定记得i--;
这里一定要注意for循环里面的 i < s.size(),这里的s.size()是随着字符串删除而改变的。如果当前erase了一个s[i]一定要i--,不然会自动加到下一个没处理的字符的下一个。
#include <bits/stdc++.h>
using namespace std;
unordered_map<char, int> mp;
int main() {
string s, s1;
getline(cin, s);
getline(cin, s1);
for (int i = 0; i < s1.size(); i++) mp[s1[i]] = 1;
for (int i = 0; i < s.size(); i++)
if (mp[s[i]] == 1) {
s.erase(i, 1);
i--;
}
cout << s;
}