1396 - 字符串的查找删除

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

题目输入

输入只有1组数据。

输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

题目输出

删除输入的短字符串(不区分大小写)并去掉空格,输出。

输入/输出样例

输入格式

in
#include 
int main()
{

printf(" Hi ");
}

输出格式

#clude
tma()
{

prtf("Hi");
}

C语言解答

#include<stdio.h>   
#include<stdlib.h>   
#include<string.h>   
#include<math.h>   
  
char str[1000],string[1001][1001],string2[1001][1001];  
  
int main()  
{  
    int n,i,j,index = 0,k;     
    gets(str);  
    while(gets(string[index]))  
    {  
        if(strcmp(string[index],"}") == 0){  
            break;  
        }  
        index++;  
    }    
    for(i = 0;i < strlen(str);i++){  
        if(str[i] >= 'A' && str[i] <= 'Z'){  
            str[i] = str[i] - 'A' + 'a';  
        }  
    }  
    for(i = 0;i <= index;i++){    
        for(j = 0;j < strlen(string[i]);j++){     
            string2[i][j] = string[i][j];     
            if(string[i][j] >= 'A' && string[i][j] <= 'Z'){  
                string[i][j] = string[i][j] - 'A' + 'a';  
            }  
        }    
        j = 0,k = 0;  
        for(j = 0,k = 0;j < strlen(string[i]);){       
            if(string[i][j+k] == str[k]){  
                k++;         
                if(k == strlen(str)){  
                    j = j+k;  
                }  
            }    
            else{                    
                if(string[i][j] != ' '){  
                    //string3[i][m++] = string2[i][j];   
                    printf("%c",string2[i][j]);  
                }  
                j++;  
                k = 0;  
            }  
        }//for   
        printf("\n");  
    }  
    return 0;  
}  

C++解答

#include <stdio.h>
#include <string.h>

char * Strlwr(char *str){
	int i=0;
	while(str[i]){
		if('A'<=str[i] && str[i]<='Z'){
			str[i] += 32;
		}
		i++;
	}

	return str;
}

int main(){
	char subStr[1000];	// 用来存储需要删除的字符串
	char str[1000];		// 用来存储待删除的整串
	char strTmp[1000];
	gets(subStr);		// 读取需要删除的字符串
	Strlwr(subStr);
	int subLen = strlen(subStr);	// 记录需要删除的字符串的长度
	while(gets(str)){	// 获取整串
		strcpy(strTmp, str);
		Strlwr(strTmp);
		int i=0, j=0;
		while(str[i]){
			if(str[i] == ' '){
				i++;			// 如果当前是空格,则跳过这个空格
			}else if(strncmp(strTmp+i, subStr, subLen) == 0){
				i += subLen;	// 如果当前连续 subLen 个字符时需要删除的字符串,则跳过这个长度
			}else{
				str[j++] = str[i++];	// 如果不是上面两种情况,则拷贝字符
			}
		}
		str[j] = '\0';		// 最后字符需要结尾

		puts(str);	// 输出结果
	}

	return 0;
}