删除字符串中的子串

MOOC 题目内容:

输入2个字符串S1S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2

提示:输入数据的设计使得不可能出现输出为空的情况。

输入格式:

输入分别给出2个每个不超过100个字符长度的不带空格的非空字符串,对应S1S2,以空格分开

输出格式:

在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入样例:

Thisisatest is 

输出样例:

Thatest

时间限制:500ms内存限制:32000kb

<C 代码>

#include <stdio.h>
#define N 100

/**
	删除在长串中指定的字符串。
	str1: 长串地址
	str2: 指定字符串地址
	str:  结果字符串地址
**/
void deleteSub(const char * str1, const char * str2, char * str)
{
	// 变量,用于各自数组下标
	int idx1 = 0;
	int idx2 = 0;
	int idx = 0;

	// 遍历str1数组,匹配是否与str2数组相同。
	while(str1[idx1] != '\0')
	{
		while(str2[idx2] != '\0')
		{
			// 相同情况,str1 和 str2 下标自增,直到满足全部相同,此时将 str2 下标置0,匹配str1 之后的元素
			// 不相同时,直接跳出匹配,进行str1 下一元素匹配,并且将不匹配元素存入str 中。
			if(str2[idx2] == str1[idx1])
			{
				idx1 ++;
				idx2 ++;
				if(str2[idx2] == '\0')
				{
					idx2 = 0;
					break;
				}
			}
			else
			{
				idx2 = 0;
				str[idx]=str1[idx1];
				idx ++;
				idx1 ++;
				break;
			}
		}
	}
	//字符串结束
	str[idx]='\0';
}

int main(void)
{
	char str[N],substr[N],resultstr[N];
	scanf("%s %s",str,substr);
	deleteSub(str,substr,resultstr);
	printf("%s",resultstr);
	return 0;
}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值