码迷,mamicode.com
首页 > 其他好文 > 详细

华为机试—删除相同子串

时间:2015-01-06 00:50:31      阅读:140      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!