#include <iostream>
#include <iostream>
char* skip_if( char* s, const char* ss )
{
char* p = s;
const char* pp = ss;
while( *p && *pp && *p == *pp )
p++, pp++;
return *pp ? s : p;
}
void remove( char* s, const char* ss )
{
char *ps = s; // source
char *pd = s; // destination
while( *ps )
{
ps = skip_if( ps, ss );
*pd++ = *ps++;
}
*pd = 0;
}
int main()
{
using namespace std;
char str[] = "this that there this that there";
const char* substr = "th";
remove( str, substr );
cout << str;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogICAgI2luY2x1ZGUgPGlvc3RyZWFtPgoKICAgIGNoYXIqIHNraXBfaWYoIGNoYXIqIHMsIGNvbnN0IGNoYXIqIHNzICkKICAgIHsKICAgICAgY2hhciogcCA9IHM7CiAgICAgIGNvbnN0IGNoYXIqIHBwID0gc3M7CiAgICAgIHdoaWxlKCAqcCAmJiAqcHAgJiYgKnAgPT0gKnBwICkKICAgICAgICBwKyssIHBwKys7CiAgICAgIHJldHVybiAqcHAgPyBzIDogcDsKICAgIH0KCiAgICB2b2lkIHJlbW92ZSggY2hhciogcywgY29uc3QgY2hhciogc3MgKQogICAgewogICAgICBjaGFyICpwcyA9IHM7IC8vIHNvdXJjZQogICAgICBjaGFyICpwZCA9IHM7IC8vIGRlc3RpbmF0aW9uCiAgICAgIHdoaWxlKCAqcHMgKQogICAgICB7CiAgICAgICAgcHMgPSBza2lwX2lmKCBwcywgc3MgKTsKICAgICAgICAqcGQrKyA9ICpwcysrOwogICAgICB9CiAgICAgICpwZCA9IDA7CiAgICB9CgogICAgaW50IG1haW4oKQogICAgewogICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwoKICAgICAgY2hhciBzdHJbXSA9ICJ0aGlzIHRoYXQgdGhlcmUgdGhpcyB0aGF0IHRoZXJlIjsKICAgICAgY29uc3QgY2hhciogc3Vic3RyID0gInRoIjsKICAgICAgcmVtb3ZlKCBzdHIsIHN1YnN0ciApOwoKICAgICAgY291dCA8PCBzdHI7CgogICAgICByZXR1cm4gMDsKICAgIH0K