问题 C: 字符串的查找删除
时间限制: 1 Sec 内存限制: 32 MB
提交: 1011 解决: 280
[提交][状态][讨论版][命题人:外部导入]
题目描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入
in #include int main() { printf(" Hi "); }
样例输出
#clude tma() { prtf("Hi"); }
提示
注:将字符串中的In、IN、iN、in删除。
#include<cstdio>
#include<cstring>
const int maxn = 1010;
void change(char str[])
{
for(int i = 0; i < strlen(str); i++)
{ //È«²¿×ª»¯ÎªÐ¡Ð´×Öĸ£»
if(str[i] >= 'A' && str[i] <= 'Z')
str[i] = str[i] - 'A' + 'a';
}
}
int main()
{
char str1[maxn],del[maxn];
gets(del);
change(del);
while(gets(str1)!=NULL)
{
char temp[maxn];
char ans[maxn];
for(int i = 0; i < strlen(str1); i++)
{ //È«²¿×ª»¯ÎªÐ¡Ð´×Öĸ£»
if(str1[i] >= 'A' && str1[i] <= 'Z')
ans[i] = str1[i] - 'A' + 'a';
else
ans[i]=str1[i];
}
int i=0,j=0,num=0;
while(ans[i]!='\0')
{
if(ans[i]==del[j])
{
int k=i;
while(ans[k]==del[j]||&&del[j]!='\0')
{
k++;j++;
}
if(del[j]=='\0') //Æ¥Åä³É¹¦É¾³ý¸Ã´®
{
i=i+j;
j=0;
continue;
}
j=0;
}
while(str1[i]==' ')
i++;
temp[num++]=str1[i++];
}
temp[num]='\0';
for(int a=0;a<strlen(temp);a++)
printf("%c",temp[a]);
printf("\n");
}
return 0;
}