#include <iostream>
#include <string>
int main() {
std::string const toReplace = "ing";
std::string const replacement = "ed";
std::string const separators = " ";
std::string string = " Hello hing and ning and ting ying ";
std::string::size_type first = 0, last = 0;
while (true) {
first = string.find_first_not_of(separators, last);
if (first == std::string::npos) {
break;
}
last = string.find_first_of(separators, first);
if (last == std::string::npos) {
break;
}
std::string::size_type wordLength = last - first;
if (wordLength >= toReplace.length()) {
std::string::size_type tailFirst = last - toReplace.length();
if (string.compare(tailFirst, toReplace.length(), toReplace) == 0) {
string.replace(tailFirst, toReplace.length(), replacement);
}
}
}
std::cout << string << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgogCiAKaW50IG1haW4oKSB7CiAgICBzdGQ6OnN0cmluZyBjb25zdCB0b1JlcGxhY2UgICAgPSAiaW5nIjsKICAgIHN0ZDo6c3RyaW5nIGNvbnN0IHJlcGxhY2VtZW50ICA9ICJlZCI7CiAgICBzdGQ6OnN0cmluZyBjb25zdCBzZXBhcmF0b3JzICAgPSAiICI7CiAgICAKICAgIHN0ZDo6c3RyaW5nIHN0cmluZyA9ICIgSGVsbG8gIGhpbmcgYW5kICAgbmluZyBhbmQgdGluZyB5aW5nICI7CiAgICAKICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZmlyc3QgPSAwLCBsYXN0ID0gMDsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICBmaXJzdCA9IHN0cmluZy5maW5kX2ZpcnN0X25vdF9vZihzZXBhcmF0b3JzLCBsYXN0KTsKICAgICAgIGlmIChmaXJzdCA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewogICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICAKICAgICAgIGxhc3QgPSBzdHJpbmcuZmluZF9maXJzdF9vZihzZXBhcmF0b3JzLCBmaXJzdCk7CiAgICAgICBpZiAobGFzdCA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewogICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICAKICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgd29yZExlbmd0aCA9IGxhc3QgLSBmaXJzdDsKICAgICAgIGlmICh3b3JkTGVuZ3RoID49IHRvUmVwbGFjZS5sZW5ndGgoKSkgewogICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSB0YWlsRmlyc3QgPSBsYXN0IC0gdG9SZXBsYWNlLmxlbmd0aCgpOwogICAgICAgICAgaWYgKHN0cmluZy5jb21wYXJlKHRhaWxGaXJzdCwgdG9SZXBsYWNlLmxlbmd0aCgpLCB0b1JlcGxhY2UpID09IDApIHsKICAgICAgICAgICAgIHN0cmluZy5yZXBsYWNlKHRhaWxGaXJzdCwgdG9SZXBsYWNlLmxlbmd0aCgpLCByZXBsYWNlbWVudCk7CiAgICAgICAgICB9CiAgICAgICB9CiAgICB9CiAgICAKICAgIHN0ZDo6Y291dCA8PCBzdHJpbmcgPDwgc3RkOjplbmRsOwp9Cgo=