(华为机试)删除字符串中相同子串

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

比如输入:123abc12de234fg1hi34j123k

子串:123

输出:abc12de234fg1hi34jk


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

int delete_sub_str(const char* str,const char* sub_str,char* result)
{
	if(str==NULL||sub_str==NULL)
		return -1;

	int strLen=strlen(str);
	int substrLen=strlen(sub_str);
	int count=0;
	const char* p=str;
	const char* q=sub_str;
	char* tmp=(char *)malloc(substrLen+1);
	memset(tmp,'0',substrLen);
	
	while(*p){
		memmove(tmp,p,substrLen);
		tmp[substrLen]='\0';
		if(strcmp(tmp,q)==0){
			count++;
			p=p+substrLen;
		}
		else{
			*result=*p;
			p++;
			result++;
		}
		memset(tmp,'0',substrLen+1);
	}
	*result='\0';
	free(tmp);
	tmp=NULL;
	printf("number of sub string is : %d\n",count);
	return count;
}

int main()
{
	char* Instr="123abc12de234fg1hi34j123k";
	char* Substr="123";
	int len=strlen(Instr);
	char* Outstr=(char *)malloc(len+1);
	delete_sub_str(Instr,Substr,Outstr);
	printf("string after delete sub string is : %s\n",Outstr);
	free(Outstr);
	Outstr=NULL;
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
字符串化繁为简是指将复杂的问题或情况转化为简单的字符串处理。在Java语言,可以通过字符串的各种方法和特性来实现。 首先,我们可以使用字符串的split()方法将一个字符串按照指定的分隔符分割成一个字符串数组。这个方法很实用,可以将一个较长的字符串按照指定的标记分割成若干子字符串,方便后续的处理。 其次,我们可以使用字符串的replace()方法来替换字符串的指定字符或子串。通过这个方法,我们可以将一个字符串的复杂部分替换为简单的内容,进而简化问题。 另外,字符串的indexOf()方法可以用来查找某个字符或子串在原字符串的位置。通过这个方法,我们可以找到需要处理的复杂部分的位置,并进行相应的处理。 此外,字符串的length()方法可以获取字符串的长度,而charAt()方法可以获取指定位置的字符。利用这两个方法,我们可以遍历字符串,对每个字符进行逐个处理。 最后,我们还可以使用字符串的concat()方法将多个字符串连接起来成为一个字符串。这在某些情况下非常方便,可以将多个简单字符串组合成一个复杂字符串或者将一个复杂字符串拆分成多个简单字符串。 总之,通过利用Java字符串的各种方法和特性,我们可以将复杂的问题或情况转化为简单的字符串处理,达到字符串化繁为简的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值