有限自动机字符串匹配_KMP算法计算状态转换表

#include 
#include 
#include 
using namespace std;


int * compute_prefix_function(string str)//计算字符串的前缀函数
{
	int m=str.length();
	int q=-1;
	int *prefix_table=new int[m];
	prefix_table[0]=q;
	for(int i=1;i-1 && str[q+1]!=str[i]){
			q=prefix_table[q];
		}		
		if(str[q+1]==str[i]){
			++q;
		}
		prefix_table[i]=q;
	}

	for(int i=0;i-1 && pattern[q+1]!=alptable[j]){
				q=prefix_table[q];
			}
			if(pattern[q+1]==alptable[j]){
				++q;
			}
			transTab[i][j]=q+1;
		}
	}	
	delete [] prefix_table;

	for(int i=0;ima,int m)//利用kmp算法计算状态转换表的有限自动机算法
{
	int n=text.length();
	int q=0;
	for(int i=0;ima;
	for(int i=0;i(),ma);
	return 0;
}
有限自动机字符串匹配_KMP算法计算状态转换表_第1张图片

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