题目描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。输出
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入
in#include int main(){printf(" Hi ");}
样例输出
#cludetma(){prtf("Hi");}
提示
注:将字符串中的In、IN、iN、in删除。
1 #include2 #include 3 #include 4 using namespace std; 5 6 int main(){ 7 string del_str; 8 getline(cin, del_str); 9 unsigned long del_len = del_str.size();10 for(size_t i = 0; i < del_len; i++) if(isupper(del_str[i])) del_str[i] += 32;11 string kong(del_len,' ');12 13 string ans_str;14 vector upper_idxs;15 vector ::iterator it;16 17 while(getline(cin, ans_str)){18 unsigned long t = ans_str.find(' ', 0);19 while(t != string::npos){20 ans_str.erase(t, 1);21 t = ans_str.find(' ', t);22 }23 24 unsigned long ans_len = ans_str.size();25 for(int i = 0; i < ans_len; i++){26 if(isupper(ans_str[i])){27 ans_str[i] += 32;28 upper_idxs.push_back(i);29 }30 }31 32 t = ans_str.find(del_str, 0);33 while(t != string::npos){34 ans_str.replace(t, del_len, kong);35 for(unsigned long j = t; j < t + del_len; j++){36 for(it = upper_idxs.begin(); it != upper_idxs.end(); it++){37 if(*it == j) upper_idxs.erase(it);38 }39 }40 t = ans_str.find(del_str, t);41 }42 for(it = upper_idxs.begin(); it != upper_idxs.end(); it++) ans_str[*it] -= 32;43 44 t = ans_str.find(' ', 0);45 while(t != string::npos){46 ans_str.erase(t, 1);47 t = ans_str.find(' ', t);48 }49 cout << ans_str << endl;50 upper_idxs.clear();51 }52 return 0;53 }