4925: 字符串的查找删除
时间限制: 1 Sec 内存限制: 32 MB
提交: 41 解决: 17
[提交][状态][讨论版]
题目描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入
in #include int main() { printf(" Hi "); }
样例输出
#clude tma() { prtf("Hi"); }
提示
注:将字符串中的In、IN、iN、in删除。
来源
心得:1、数组长度没有给出,要用string;
2、每行第一个输入要输入字符,并且判断字符是不是\n,如果是,就输出,因为getline函数是以\n为每行输入的结束符号,
但是字符串中不输入\n.
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int is_y(char a,char b)
{
if(a=='i'&&b=='n') return 1;
if(a=='i'&&b=='N') return 1;
if(a=='I'&&b=='n') return 1;
if(a=='I'&&b=='N') return 1;
return 0;
}
int main(void)
{
string str,s1;
char ch;
while(ch=getchar(),ch!=EOF)
{
s1.clear();
if(ch=='\n')
{
cout<<endl;
continue;
}
else
{
getline(cin,str);
str=ch+str;
}
int l=str.size(),i,fg=0;
for(i=0;i<l;i++)
{
if(str[i]==' ') continue;
else if(is_y(str[i],str[i+1]))
{
i++;continue;
}
else s1.push_back(str[i]),fg=1;
}
if(fg) cout<<s1<<endl;
}
return 0;
}