Descripción del título
El granjero John ordenó a Good Hooves mantener revistas para sus vacas para que tengan suficientes materiales para leer. Desafortunadamente, el último número contiene artículos sobre cómo cocinar el filete perfecto, y FJ no quiere que sus vacas vean este artículo bastante indecente (obviamente, esta revista necesita una mejor supervisión editorial).
FJ tomó todo el texto de la revista y creó una cadena de caracteres s con una longitud menor o igual a 10 ^ 6. De ahora en adelante, quiere eliminar una subcadena T para revisar contenido inapropiado. Para hacer esto, el granjero John encuentra la T que aparece en S y la elimina. Luego, repite el proceso nuevamente, eliminando la T que aparece, hasta que la S no está presente. Tenga en cuenta que después de eliminar una vez, se puede crear una nueva T. Esta T no existía antes.
Envíe el contenido final de S determinado por FJ después de la revisión.
De entrada
La primera línea contendrá S y la
segunda línea contendrá T. La longitud de T es como máximo la longitud de S. Todos los caracteres de S y T son letras minúsculas (rango a ... z)
Salida
S después de la eliminación completa. Asegúrese de que S no se vacíe durante el proceso de eliminación.
Entrada de muestra
whatthemomooofun
moo
Salida de muestra
whatthefun
Análisis
Vamos a dar un poco de cxy aquí %%.
Realmente no puedo pensar en una simulación de pila ... Lo hice después de escuchar la explicación.
Presione un carácter a la vez, y luego determine si los caracteres de longitud (t) son iguales a t (cadena de patrón), y luego haga estallar la pila.
Código en
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
string s,t,s1;
int l,len;
int p;
char c[1000001];
int main(){
freopen("censor.in","r",stdin);
freopen("censor.out","w",stdout);
cin>>s;
cin>>t;
l=-1;
len=s.size();
for(int i=0;i<len;i++)
{
l++;
if((s[l]==t[t.size()-1])&&(l>=t.size()-1))
{
p=1;
for(int j=l-t.size()+1;j<=l;j++)
{
if(s[j]!=t[j-(l-t.size()+1)])
{
p=0;
break;
}
}
if(p!=0)
{
s.erase(l-t.size()+1,t.size());
l=l-t.size();
}
}
}
cout<<s;
fclose(stdin);
fclose(stdout);
return 0;
}