⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmsearch.cpp

📁 BM搜索算法源代码。能够快速搜索。写成类
💻 CPP
字号:
#include "stdafx.h"
#include "BMSearch.h"


//关键字初始化
//关键字指针 关键字长度 
int CBMSearch::config(unsigned char *key,int keylen)
{
	int i;

	//长度不能大于256
	if( keylen>MAXKEYLEN ) return 1;
	m_KeyLen=keylen;
	memcpy(m_Key,key,m_KeyLen);

	//变量清零
	memset(m_KeyChar,0xff,MAXKEYLEN);
	memset(m_Table,0xff,256);
	
	//初始化偏移量
    for(i=0;i<keylen;i++)
	{
		if( m_Table[ key[i] ]!=0xff ) m_KeyChar[i]=m_Table[ key[i] ];
		m_Table[ key[i] ]=i;
	}
	return 0;
}

//查找
//待查找数据指针 待查找数据长度 返回找到的指针
int CBMSearch::search(unsigned char *data,int datalen,unsigned char *position)
{
	int i;
	unsigned char t,*p;

	for(i=m_KeyLen-1;i<datalen;i+=m_KeyLen)
	{
		t=m_Table[ *(data+i)];

		if( t!=0xff )
		{
			while( t!=0xff )
			{
				p=data+i-t;
				if( !memcmp(p,m_Key,m_KeyLen) ) 
				{
					//匹配
					position=p;
					return 0;
				}

				//不匹配
				t=m_KeyChar[t];
			}
		}
	}

	return 2;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -