题目1168:字符串的查找删除
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:5092
解决:2097
- 题目描述:
-
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
- 输入:
-
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
- 输出:
-
删除输入的短字符串(不区分大小写)并去掉空格,输出。
- 样例输入:
-
in #include int main() {printf(" Hi "); }
- 样例输出:
-
#clude tma() {prtf("Hi"); }
- 提示:
-
注:将字符串中的In、IN、iN、in删除。
#include<iostream> #include<stdio.h> #include<queue> #include<string> #include<string.h> #include<algorithm> #include<ctype.h> using namespace std;int main() {char str[101];gets(str);string a=str;//将其保存在a中for(unsigned int i=0; i<a.size(); i++){a[i]=tolower(a[i]);//将a中的字符全部改为小写 }while(gets(str))//输入长字符串 {string b=str,c=b;for(unsigned int i=0; i<b.size(); i++){b[i]=tolower(b[i]);}int t=b.find(a,0);//在b中查找a的位置while(t!=string::npos)//若查找成功,则重复循环 {c.erase(t,a.size());//删除c中相应位置字符,c为原串 b.erase(t,a.size());t=b.find(a,t);//继续查找b中下一个出现字符串a的位置 }t=c.find(' ',0);while(t!=string::npos){c.erase(t,1);t=c.find(' ',0);}//删除c中所有的空格cout<<c<<endl;}return 0; }