思路分析:
本题主要有两种思路,第一种是边检测边输出,筛选合法的字符;第二种是筛选不合法的字符,剔除后即为结果。本人用的是第二种,需要注意的细节请留意代码注释。
另外值得注意的是,cin无法读入空串,须使用getline方法。要导入string
示例代码:
#include<iostream>
#include<string>
using namespace std;
int main() {
string s1, s2;
getline(cin, s1);
getline(cin, s2);
bool flag = false;//大写键坏掉的标志,true为坏掉
for (int i = 0; i < s1.length(); i++) {//+号是否坏掉
if (s1[i] == '+') {
flag = true;
break;
}
}
for (int i = 0; i < s1.length(); i++) {//校验
char temp = s1[i];
for (int j = 0; j < s2.length(); j++) {
if (flag && (s2[j] >= 'A' && s2[j] <='Z')) {//大写键坏掉,同时遇到了大写字符
s2.erase(j, 1);
j--;//数组长度发生了变化,指针指向了下一位,所以要减回来
}
else if (toupper(s2[j]) == temp) {
s2.erase(j, 1);
j--;
}
}
}
cout << s2 << endl;
return 0;
}