#include <iostream>
#include <string>
#include <vector>
using namespace std;
int RemoveWordFromLine( string & line, const string& word)
{
int no_of_occurence= 0 ;
int const length_of_stopword= word.length ( ) ;
for ( int j= 0 ; j<= line.length ( ) - length_of_stopword; j++ ) {
if ( j+ length_of_stopword<= line.length ( ) ) {
if ( ( j== 0 || line[ j- 1 ] == ' ' ) && ( j+ length_of_stopword== line.length ( )
|| line[ j+ length_of_stopword] == ' ' ) ) { //I have to check this to ensure 'a' in "air" is not removed by the function.
if ( line.substr ( j,length_of_stopword) == word) {
line.replace ( j,length_of_stopword,"*" ) ;
no_of_occurence++ ;
}
}
}
}
}
int main( ) {
vector< string> lines {
"The house whirled around two or three times and rose slowly" ,
"Then the house whirled around two or three times and rose slowly" ,
"through the air. Dorothy felt as if she were going up in a balloon." ,
"The north and south winds met where the house stood, and made it the" ,
"The north and south winds met where the house stood, and made it the " ,
"exact center of the cyclone."
} ;
vector< string> stopwords {
"a" ,
"an" ,
"A" ,
"and" ,
"The" ,
"the" ,
"in" ,
"or" ,
"of"
} ;
int i= 0 ;
for ( auto & line : lines) {
cout << ++ i<< ") " << line<< endl;
for ( auto & word : stopwords) {
RemoveWordFromLine( line,word) ;
}
cout << " => " << line<< endl;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IFJlbW92ZVdvcmRGcm9tTGluZShzdHJpbmcgJmxpbmUsIGNvbnN0IHN0cmluZyYgd29yZCkKewoJaW50IG5vX29mX29jY3VyZW5jZT0wOwoJaW50IGNvbnN0IGxlbmd0aF9vZl9zdG9wd29yZD13b3JkLmxlbmd0aCgpOwoKCWZvcihpbnQgaj0wIDtqPD1saW5lLmxlbmd0aCgpLWxlbmd0aF9vZl9zdG9wd29yZDtqKyspewoJCWlmICggaitsZW5ndGhfb2Zfc3RvcHdvcmQ8PWxpbmUubGVuZ3RoKCkpewoJCQlpZiAoKGo9PTAgfHwgbGluZVtqLTFdPT0nICcpICYmIChqK2xlbmd0aF9vZl9zdG9wd29yZD09bGluZS5sZW5ndGgoKSAKCQkJICAgfHwgbGluZVtqK2xlbmd0aF9vZl9zdG9wd29yZF09PScgJyApICkgey8vSSBoYXZlIHRvIGNoZWNrIHRoaXMgdG8gZW5zdXJlICdhJyBpbiAiYWlyIiBpcyBub3QgcmVtb3ZlZCBieSB0aGUgZnVuY3Rpb24uCiAgICAJCQlpZihsaW5lLnN1YnN0cihqLGxlbmd0aF9vZl9zdG9wd29yZCk9PXdvcmQpewoJCSAgICAJCWxpbmUucmVwbGFjZShqLGxlbmd0aF9vZl9zdG9wd29yZCwiKiIpOwogICAgCQkJCW5vX29mX29jY3VyZW5jZSsrOwoJCQkJfQoJCQl9CgkJfQoJfQp9CgppbnQgbWFpbigpIHsKCXZlY3RvcjxzdHJpbmc+IGxpbmVzIHsKCQkiVGhlIGhvdXNlIHdoaXJsZWQgYXJvdW5kIHR3byBvciB0aHJlZSB0aW1lcyBhbmQgcm9zZSBzbG93bHkiLAoJCSJUaGVuIHRoZSBob3VzZSB3aGlybGVkIGFyb3VuZCB0d28gb3IgdGhyZWUgdGltZXMgYW5kIHJvc2Ugc2xvd2x5IiwKCQkidGhyb3VnaCB0aGUgYWlyLiBEb3JvdGh5IGZlbHQgYXMgaWYgc2hlIHdlcmUgZ29pbmcgdXAgaW4gYSBiYWxsb29uLiIsCgkJIlRoZSBub3J0aCBhbmQgc291dGggd2luZHMgbWV0IHdoZXJlIHRoZSBob3VzZSBzdG9vZCwgYW5kIG1hZGUgaXQgdGhlIiwKCQkiVGhlIG5vcnRoIGFuZCBzb3V0aCB3aW5kcyBtZXQgd2hlcmUgdGhlIGhvdXNlIHN0b29kLCBhbmQgbWFkZSBpdCB0aGUgIiwKCQkiZXhhY3QgY2VudGVyIG9mIHRoZSBjeWNsb25lLiIKCX07Cgl2ZWN0b3I8c3RyaW5nPiBzdG9wd29yZHMgewoJCSJhIiwKCQkiYW4iLAoJCSJBIiwKCQkiYW5kIiwKCQkiVGhlIiwKCQkidGhlIiwKCQkiaW4iLAoJCSJvciIsCgkJIm9mIgoJfTsKCQoJaW50IGk9MDsgCglmb3IgKGF1dG8mIGxpbmUgOiBsaW5lcykgewoJCWNvdXQ8PCsraTw8IikgIjw8bGluZTw8ZW5kbDsgCgkJZm9yIChhdXRvJiB3b3JkIDogc3RvcHdvcmRzKSB7CgkJCVJlbW92ZVdvcmRGcm9tTGluZShsaW5lLHdvcmQpOwoJCX0KCQljb3V0PDwiICA9PiAiPDxsaW5lPDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=