censor
题目描述
农民约翰已经为他的奶牛订好了Good Hooves keeping 杂志,使他们有足够的材料看。不幸的是,最新的一期载有关于如何煮完美的牛排的文章,而FJ 不想他的奶牛看到这篇相当不雅的文章(显然,这本杂志是需要更好的编辑监督的)。
FJ 从该杂志采取了所有文字,创建了长度小于等于10^6 的字符串s。从此,他想删除一个子串T来审查不当内容。要做到这一点,农民约翰找到S 中出现的T 并将其删除。然后,他再次重复这个过程,删除出现的T,一直持续到没有出现T 的S。注意,删除一次后可能会创建一个新的T出现,这个T是以前不存在的。
请输出审查完毕后,FJ 所确定 的S的最终内容。
输入
第一行将包含S
第二行包含T,T 的长度最多是S 的长度,S 和T 的所有字符均为小写字母(范围a..z)
输出
全部删除完成后的S。保证使得S 在删除过程中不会成为空。
样例输入
whatthemomooofun
moo
样例输出
whatthefun
这是一道字符串的基础题,没有什么好讲的!
code:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s,t;
int ls,lt,i,pd;
int main()
{
freopen("censor.in","r",stdin);
freopen("censor.out","w",stdout);
cin>>s;
cin>>t;
ls=s.size();
lt=t.size();
while(i<=ls-1)
{
if(s[i]==t[lt-1]&&i>=lt-1)
{
pd=i-lt+1;
for(int j=0;j<=lt-1;j++)
if(t[j]==s[pd]) pd++;
else
{
pd=-1;
break;
}
if(pd!=-1)
{
s.erase(i-lt+1,lt);
i-=lt;
}
}
i++;
}
cout<<s<<endl;
return 0;
}