测试点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;
}
本文介绍了一段C++代码,用于从字符串中删除出现的指定字符。通过使用unordered_map来存储需要删除的字符,并遍历原字符串进行删除操作。注意在删除字符后需要调整循环变量i,以避免错过下一个字符。最后输出处理后的字符串。
103

被折叠的 条评论
为什么被折叠?



