BF 算法

BF 算法(Brute Force)


从主串S的第一个字符开始和模式T的第一个字符进行比较,若相等,则继续比较两者的后续字符;若不相等,则从主串S的第二个字符开始和模式T的第一个字符进行比较,重复上述过程,若T中的字符全部比较完毕,则说明本趟匹配成功;若S中的字符全部比较完毕,则匹配失败。这个算法称为朴素的模式匹配算法,简称BF算法



代码:


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

#define MAXLEN 100

int BFMatch(char *x, char *y);

int main(int argc, char **argv)
{
	char s[MAXLEN] = {"ababcababa"}; //目标串
	char p[MAXLEN] = {"ababa"}; //模式串

	int flag = BFMatch(s, p);

	if(flag == -1)
		printf("匹配失败!\n");
	else
		printf("匹配成功!从目标串的s[%d] = %c 处开始匹配\n", flag, s[flag]);

	system("PAUSE");

	return 0;
}

int BFMatch(char *s, char *p)
{
	int m, n;

	m = strlen(s);
	n = strlen(p);

	for(int i = 0; i < m; i++)
	{
		for(int j = 0; j < n; j++)
		{
			if(s[i + j] != p[j])
				break;

			if( j == n - 1)
			{
				return i;
			}
		}
	}

	return -1;
}


算法时间复杂度为 O(mn)


算法如何改为 O(m+n) 呢? 额。。。。后记  KMP 算法









++++

ps

今天和大牛交流了下经验  额  感觉又找到了方向呀害羞


好好学习  天天向上奋斗


GOGO


2013.5.20

你可能感兴趣的:(BF 算法)