测试下

原创 2013年12月02日 17:28:19

kmp 小程序

void caculateNext(const char* p, int len, int* next)
{
	if(p == NULL || strlen(p) != len )
	{
		return;
	}

	memset(next, 0, len*sizeof(int));

	next[0] = -1;

	int i = 2, k;

	while(i<len)
	{
		for(k=next[i-1]; k != -1; k = next[k])
		{
			if(p[k] == p[i-1])
			{
				next[i] = next[i-1] + 1;
				break;
			}
		}
		i++;
	}
}

const char* kmp(const char* str, const char* pattern)
{
	if(str == NULL || pattern == NULL || strlen(pattern) > strlen(str))
		return NULL;

	int len = strlen(str);
	int patternlen = strlen(pattern);

	int* next = new int[patternlen];

	caculateNext(pattern, patternlen,next);

	int i=0, j= 0;
	while(i<len && j<patternlen)
	{
		if(j == -1 || str[i]==pattern[j])
		{
			i++;
			j++;
		}
		else
		{
			j = next[j];
		}
	}
	if(j >= patternlen)
		return &(str[i-j]);
	return NULL;
}


相关文章推荐

我国的网络设备测试标准

  • 2017年11月21日 16:34
  • 14KB
  • 下载

Python web接口开发与测试

  • 2017年11月20日 16:37
  • 5.05MB
  • 下载

0049算法笔记——【随机化算法】蒙特卡罗算法,主元素问题,素数测试问题

1、蒙特卡罗算法       基本概述        蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法。传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方...

性能测试报告模板

  • 2017年11月20日 13:58
  • 22KB
  • 下载

使用Nightwatch.js做基于浏览器的web应用自动测试

1        安装 1.1   安装node.js 在http://nodejs.org/ 上下载适合本机系统的安装包运行安装,注意安装选项中选择npm tool以用于后续依赖包的安装。 ...
  • Anlegor
  • Anlegor
  • 2014年03月25日 23:48
  • 5895

自动化测试与DevOps以及持续集成的关系。

最近参加了一个公司内部关于DevOps的培训。简单了解了什么是DevOps以及自动化测试在DevOps这种新的开发模式中的重要性。简单来说DevOps提倡的是加强开发团队与运维团队之间的合作,从而加快...

web安全测试用例

  • 2017年11月16日 18:45
  • 55KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:测试下
举报原因:
原因补充:

(最多只允许输入30个字)