1655: 某人好想AC哦~
Time Limit: 1 Sec Memory Limit: 128 MB
给你一个字符串S和一个字符串的P,希望你从s中删除p(注意一点的是,删除p后,可能又会形成一个新的p)
Input
一行2个字符串S,P;(长度小于100)
Output
输出S删除P后的结果
Sample Input
woyaowwwaaaac wa
Sample Output
woyaoac
HINT
解释;
第一步:woyaowwwaaaac—>woyaowwaaac
第二步:woyaowwaaac---->woyaowaac
第三步:woyaowaac—>woyaoac
Source
代码~:
#include <stdio.h>
#include <string.h>
char a[105],b[105];
int main()
{
memset(a,'\0',sizeof(a));
memset(b,'\0',sizeof(b));
while(~scanf("%s %s",a,b))
{
char *p = a,*q = b;
while(strstr(p,q))
{
char *start = strstr(p,q);
int l = strlen(a);
for(int i = 0; i < strlen(b); i++)
{
*start++ = '\0';
}
int k = 0;
for(int i = 0; i < l; i++)
{
if(a[i] != '\0') a[k++] = a[i];
}
a[k] = '\0';
p = a;
}
printf("%s\n",a);
memset(a,'\0',sizeof(a));
memset(b,'\0',sizeof(b));
}
return 0;
}
下面是我同学写的我要来学习的:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
string s,p;
while(cin>>s>>p)
{
int len=p.length();
while(s.find(p)!=string::npos)
{
int pos=s.find(p);
s.erase(s.begin()+pos,s.begin()+pos+len);
}
cout<<s<<endl;
}
return 0;
}