4925: 字符串的查找删除
Time Limit: 1 Sec Memory Limit: 32 MB
Submit: 16 Solved: 7
[Submit][Status][Web Board]
Description
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
Input
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
Output
删除输入的短字符串(不区分大小写)并去掉空格,输出。
Sample Input
in
#include
int main()
{
printf(" Hi ");
}
Sample Output
#clude
tma()
{
prtf("Hi");
}
HINT
注:将字符串中的In、IN、iN、in删除。
Source
【分析】注意!!!本题是有输入的!!!而且!!不区分大小写!!
所以,可以定义一个字符串作为中转串,将其都先转换为大写或小写字母,然后进行查找和删除。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
getline(cin,s1);
int len=s1.length();
for(int i=0;i<len;i++)
s1[i]=tolower(s1[i]);
while(getline(cin,s2))
{
string s3=s2;
int l=s2.length();
for(int i=0;i<l;i++)
s3[i]=tolower(s3[i]);
int pos=s3.find(s1);
while(pos!=string::npos)
{
s3.erase(pos,s1.length());
s2.erase(pos,s1.length());
pos=s2.find(s1);
}
pos=s2.find(' ');
while(pos!=string::npos)
{
s2.erase(pos,1);
pos=s2.find(' ');
}
cout<<s2<<endl;
}
return 0;
}