#include <iostream>
#include <string>
bool contains( std::string haystack, const std::string& needle ) {
haystack.insert( 0, " " );
haystack += ' ';
auto pos = haystack.find( needle );
if( pos == haystack.npos ) {
std::cout << "a\n";
return false;
}
if( haystack[pos - 1] != ' ' ) {
std::cout << "b\n";
return false;
}
if( haystack[pos + needle.length()] != ' ' ) {
std::cout << "c\n";
return false;
}
return true;
}
int main() {
std::cout << std::boolalpha << contains( "a!hi", "!hi" );
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKYm9vbCBjb250YWlucyggc3RkOjpzdHJpbmcgaGF5c3RhY2ssIGNvbnN0IHN0ZDo6c3RyaW5nJiBuZWVkbGUgKSB7CgloYXlzdGFjay5pbnNlcnQoIDAsICIgIiApOwoJaGF5c3RhY2sgKz0gJyAnOwoJYXV0byBwb3MgPSBoYXlzdGFjay5maW5kKCBuZWVkbGUgKTsKCglpZiggcG9zID09IGhheXN0YWNrLm5wb3MgKSB7CgkJc3RkOjpjb3V0IDw8ICJhXG4iOwoJCXJldHVybiBmYWxzZTsKCX0KCglpZiggaGF5c3RhY2tbcG9zIC0gMV0gIT0gJyAnICkgewoJCXN0ZDo6Y291dCA8PCAiYlxuIjsKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJaWYoIGhheXN0YWNrW3BvcyArIG5lZWRsZS5sZW5ndGgoKV0gIT0gJyAnICkgewoJCXN0ZDo6Y291dCA8PCAiY1xuIjsKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJcmV0dXJuIHRydWU7Cn0KCmludCBtYWluKCkgewoJc3RkOjpjb3V0IDw8IHN0ZDo6Ym9vbGFscGhhIDw8IGNvbnRhaW5zKCAiYSFoaSIsICIhaGkiICk7CglyZXR1cm4gMDsKfQ==