写个蛮力KMP算法mark一下

原创 2018年04月14日 22:11:09

用蛮力法求的next数组:

额首先要知道next数组就是模式串最长真前缀真后缀的长度

#include<iostream>
#include<cstring>
using namespace std; 
void GetNext(char T[],int next[]){
	int i,j,len;
	next[0]=-1;
	next[1]=0;//第二个字符前只有一个字符,所以真前缀真后缀长度为0 
	for(int i=2;T[i]!='\0';i++){//i=2开始 前面真前缀真后缀长度就可能>=1了 
		for(len=i-1;len>0;len--){//从最长的开始找 真前缀真后缀长度从i-1递减 
			for(j=0;j<len;j++){//j从0到len-1  真前缀真后缀的长度不超过len-1 
				if(T[j]!=T[i-len+j])break;//依次比较真前缀和真后缀的每一个字符(真前缀从0开始 真后缀从i-len开始) 
			}
			if(j==len){
				next[i]=len;break;	//第一次居然少了个break; 
			}
		}
		if(len<1)next[i]=0;
	}
}
int KMP(char a[],char b[],int next[]){
	int i=0,j=0;
	while(a[i]!='\0'&&b[j]!='\0'){
		if(a[i]==b[j]){i++;j++;}
		else{
			j=next[j];
			if(j==-1){i++;j++;}
		}
	}
	if(b[j]=='\0')return i-strlen(b)+1;
	return -1;
} 
int main(){
	char a[1000],b[100];
	int next[100];
	cin>>a>>b;
	GetNext(b,next);
	cout<<KMP(a,b,next);
	return 0;
}

字符串匹配:蛮力、KMP

前两篇文章是从网上搜索的,知道了next数组可以有多种表示方法,但感觉KMP算法详解里面第二种表示法给的程序有点小问题,今天自己改进了下,然后在leetcode(strStr)上验证了下,发现自己改进...
  • sole_cc
  • sole_cc
  • 2015-05-03 14:01:49
  • 395

算法设计之蛮力法

•蛮力法(也叫穷举法),是一种直接解决问题的方法,常常直接基于问题的描述和所涉及的概念及定义。...
  • u012808977
  • u012808977
  • 2014-08-31 21:19:11
  • 602

[KMP算法]蛮力法求next[]与“省力”法求next[]

KMP算法可用于“串匹配”问题。用单纯的蛮力法进行串匹配的时候,只是在无脑回溯待匹配串与模式串(详细的不说了),当然这也是解决“串匹配”问题时最直接的想法但KMP算法的思想,却省去了待匹配串与模式串的...
  • qq_36406016
  • qq_36406016
  • 2018-03-26 14:41:41
  • 17

KMP算法 C++实现

#include #include #include using namespace std; void getNext(const string &substr, vector &next) ...
  • a363344923
  • a363344923
  • 2014-12-07 15:41:36
  • 2271

蛮力法求背包问题

  • 2014年03月22日 12:22
  • 443KB
  • 下载

KMP算法简介

KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。...
  • Alpaca12
  • Alpaca12
  • 2016-04-27 16:26:19
  • 953

KMP算法的详细理解

很早就想写关于这个算法的具体分析,可是一直很懒的去思考这个问题。现在快要杭电的计算机复试了,复试内容我选择的是数据结构。让我又重新燃起了要对KMP算法的分析。它是我第一个碰见的比较难的关于字符串的算法...
  • ccjjnn19890720
  • ccjjnn19890720
  • 2011-04-09 15:56:00
  • 1056

基于TT 双WAN固件(dualwan)下的QOS脚本 很给力

脚本关键参数说明(V4.0): IPS:限速开始IP地址 IPE:限速结束IP地址 IPS和IPE最好不要填写2---254,不然脚本运行时间会比较长,会多占用一些内存。 效率上,如果采用了u...
  • eydwyz
  • eydwyz
  • 2016-11-29 14:22:10
  • 529

MARK一下第一个APP

这是APP的菜单Fragment ,这里有左右两个listview,销量排行,好评排行和下面的分类使用了两个自定义adapter。点击分类可以跳转到相应listview的位置,滑动右侧listview...
  • lvkang20050063
  • lvkang20050063
  • 2015-05-18 23:18:18
  • 548

第一篇CSDN博客,mark一下

改了一个新名字,ArtistBro2,嗯。
  • u011254178
  • u011254178
  • 2014-07-17 14:50:53
  • 85
收藏助手
不良信息举报
您举报文章:写个蛮力KMP算法mark一下
举报原因:
原因补充:

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