[开心IT面试题] 删除子字符串

本文介绍了一个函数,用于从原始字符串中删除所有重复的子串,并返回这些子串的数量。通过遍历字符串和子字符串,实现重复子串的识别和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

   只要是原字符串中有相同的子串就删掉,不管有多少个,返回子串个数。

 

代码:

int Delete_Sub_Str(const char *str, const char *sub_str, char *result)
{
    	if(str == NULL || sub_str == NULL)
	{
		return 0;
	}

	//记录子字符串出现次数
	int count = 0;

	//备份字符串和子字符串
	const char *string, *subString;
	string = str;
	subString = sub_str;

	//分别计算字符串和子字符串
	int strLen = strlen(string);
	int subStrLen = strlen(subString);

	//申请一个临时变量
	char *tempSubStr;
	tempSubStr = (char *)malloc(subStrLen+1);
	memset(tempSubStr, 0, subStrLen+1);

	while(*string != '\0')
	{
		memcpy(tempSubStr, string, subStrLen);

		if(strcmp(tempSubStr, subString) == 0)
		{
			count++;
			memset(tempSubStr, 0, subStrLen+1);
			string += subStrLen;
		}else
		{
			*result++ = *string;
			memset(tempSubStr, 0, subStrLen+1);
			string++;
		}
	}

	if(tempSubStr)
	{
		free(tempSubStr);
	}
	return count;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值