//这道题我自己写的程序只能得13分,别人的虽能过去,但在我的编辑器上过不去。代码也有一句没看懂
L1-011. A-B
时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
本题要求你计算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!
别人的程序:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string A;
string B;
//按行读取
getline(cin, A);
getline(cin, B);
//遍历A字符串中的每一个字符
for (auto charitem = begin(A); charitem < end(A); )
{
if ( B.find(*charitem) != -1)//如果找到了重复的,很可能下一个还是重复的
{
A.erase(charitem, charitem + 1);
}
else//如果没有找到,寻找下一个
{
charitem++;
}
}
cout << A;
}
我的程序:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string A;
string B;
//按行读取
getline(cin, A);
getline(cin, B);
//遍历A字符串中的每一个字符
for(int i=0;i<A.length();i++){
for(int j=0;j<B.length();j++){
if(A[i]==B[j]) A.erase(i,1);
}
}
cout<<A;
}