首页 > 其他 > 详细

华为机试—删除相同子串

时间:2015-01-06 00:49:54      阅读:191      评论:0      收藏:0      [点我收藏+]

输入两个字符串,找出在第一个字符串中,有多少个第二个子串,输出个数,并输出删除全部第二个子串后的字符串。


输入:abcdcde cd

输出:2 abe


#include <iostream>
#include <string>
using namespace std;

int delete_sub_str(const char *str,const char *sub_str,char *result)
{
	const char *p,*q;
	char *t,*tmp;
	int n=0;
	int num=0;//相同子串个数
	p=str;
	q=sub_str;
	t=result;
	n=strlen(q);
	tmp =new char[n+1];
	memset(tmp,0,n+1);
	while (*p)
	{
	    memcpy(tmp,p,n);//从p的初始位置开始拷贝n个字符到tmp
		if (strcmp(tmp,q)==0)//tmp=q
		{
			num++;
			memset(tmp,0,n+1);
			p=p+n;
		}
		else
		{      
			*t = *p;
			p++;
			t++;
			memset(tmp,0,n+1);
		}
	}
	delete tmp;
	return num;
}

void main()
{
	char s[100] = {'\0'};
	int num = delete_sub_str("123abc123de1234fg1hi34j123k","123",s);
    cout<<num<<endl;
	cout<<s<<endl;
}


华为机试—删除相同子串

原文:http://blog.csdn.net/wtyvhreal/article/details/42441901

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!