`
Enria
  • 浏览: 11755 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

KMP

 
阅读更多

#include <stdio.h>
#include "String.h"

#define MaxSize 100

void getNext(SqString t, int next[])
{
	int j,k;
	j = 0; 
	k = -1;
	next[0] = -1;
	while(j<t.len-1)
	{
		if( k == -1 || t.ch[j] == t.ch[k])
		{
			j++;
			k++;
			next[j] = k;
			if(t.ch[j] != t.ch[k])
				next[j] = k;
			else
				next[j] = next[k];
		}
		else
			k = next[k];
	}
	for(int i=0;i<MaxSize;i++)
		printf("%d ",next[i]);

}

int KMPIndex(SqString s, SqString t)
{
	int i =0,j = 0;
	int v;
	int next[MaxSize];
	for(int m=0;m<MaxSize;m++)
		next[m] = 0;
	getNext(t,next);
	while(i<s.len && j<t.len)
	{
		if(j == -1 || s.ch[i] == t.ch[j])
		{
			i++;
			j++;
		}
		else
			j = next[j];
	}
	if(j >= t.len) 
		v = i - t.len;
	else
		v = -1;
	return v;
}

int main(void)
{
	SqString s,t;
	char s_ch[] = "cdddcdc";
	char t_ch[] = "cdc";
	StrAssign(s,s_ch); //将字符数组赋给串时,可由'\0'来判断结尾
	StrAssign(t,t_ch);
	printf("%d",s.len);
	printf("%d",KMPIndex(s,t));
	return 0;
}
 
0
5
分享到:
评论

相关推荐

    KMP.rar_KMP_KMP 串匹配_KMP 支持通配符

    《KMP算法与通配符支持在字符串匹配中的应用》 KMP算法,全称Knuth-Morris-Pratt算法,是一种高效的字符串匹配算法,它由Donald Knuth、James H. Morris和 Vaughan Pratt三位学者于1977年提出。在计算机科学中,...

    kmp.rar_KMP

    KMP(Knuth-Morris-Pratt)算法是一种在文本字符串中高效地查找子串的算法,由D.E. Knuth、V.R. Morris和J.H. Pratt在1970年代提出。这个算法避免了在匹配过程中频繁的回溯,极大地提高了查找效率。在给定的"KMP.rar...

    数据结果 kmp算法实验报告

    ### 数据结果 KMP算法实验报告 #### 实验背景与目的 本实验主要针对《数据结构》课程中的字符串处理部分,具体涉及的是模式匹配算法——KMP算法。通过实验加深学生对串类型及其基本操作的理解,并重点掌握两种重要...

    KMP算法详解KMP算法详解

    KMP 算法详解 KMP 算法是字符串模式匹配的一种高效算法,解决了字符串中模式匹配的问题。该算法可以在 O(m+n) 的时间复杂度内完成字符串模式匹配。 简单匹配算法 简单匹配算法的思想是直截了当的,将主串 S 中...

    kMP算法JavakMP算法JavakMP算法JavakMP算法Java

    KMP(Knuth-Morris-Pratt)算法是一种在文本串(主串)中查找给定模式串(目标串)的字符串匹配算法。这个算法的主要特点是利用预处理得到的“next”数组,避免了模式串回溯的过程,提高了匹配效率。下面我们将详细...

    KMP算法实现模板(c++版)ACM算法

    **KMP算法实现模板(C++版) ACM算法** KMP(Knuth-Morris-Pratt)算法是一种在文本字符串中查找子串匹配的有效方法,尤其适用于已经预处理了模式串(子串)的匹配信息。它是由D.E. Knuth、V. Morris和J.H. Pratt...

    KMP算法详解 KMP算法详解

    KMP算法,全称为Knuth-Morris-Pratt算法,是一种高效的字符串匹配算法,由Donald Knuth、Vaughan Morris和Robert Pratt三位学者提出。它的主要目标是在一个长字符串(主串A)中查找是否存在一个指定的短字符串(模式...

    kmp.rar_KMP_kmp open_openmp_并行_并行串匹配

    《OpenMP实现KMP并行串匹配》 在信息技术领域,字符串匹配算法是核心问题之一,广泛应用于文本处理、搜索引擎、生物信息学等多个领域。KMP(Knuth-Morris-Pratt)算法作为经典的字符串匹配算法,以其高效的性能受到...

    KMP忽略大小写字符串匹配

    KMP(Knuth-Morris-Pratt)算法是解决这个问题的一种高效方法,而这里的主题是“KMP忽略大小写字符串匹配”,即在进行匹配时,不区分输入字符串中的字符大小写。下面我们将深入探讨KMP算法以及如何实现大小写不敏感...

    KMP算法KMP算法KMP算法KMP算法

    KMP算法,全称Knuth-Morris-Pratt算法,是一种高效的字符串匹配算法,由Donald Knuth、James H. Morris和 Vaughan Pratt三位学者在1970年提出。该算法主要用于解决在一个大文本串(A)中查找是否存在一个指定的小...

    kmp.rar_kmp算法伪代码

    KMP(Knuth-Morris-Pratt)算法是一种在字符串中搜索子串的高效算法,由Donald Knuth、James H. Morris和Vaughan Pratt共同提出。它避免了不必要的回溯,大大提高了字符串匹配的效率。这个“kmp.rar”压缩包包含了一...

    KMP算法算法 KMP算法 KMP

    算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP

    KMP算法,求子字符串位置

    KMP(Knuth-Morris-Pratt)算法是一种在主字符串中搜索子字符串的高效算法,由Donald Knuth、Vaughan Pratt和James H. Morris三位学者提出。这个算法避免了在匹配过程中不必要的回溯,显著提高了查找效率。在数据...

    字符串的模式匹配算法——KMP

    KMP(Knuth-Morris-Pratt)算法是其中一种高效的算法,尤其适用于处理具有重复子串的模式匹配问题。接下来,我们将深入探讨KMP算法的基本原理、实现过程以及其在C++中的应用。 ### 1. KMP算法的基本思想 KMP算法的...

    易语言KMP算法模块

    易语言KMP(Knuth-Morris-Pratt)算法模块是一个专门为易语言设计的文本处理工具,用于在字符串中高效地查找子串出现的位置。KMP算法是一种改进的字符串匹配算法,由Donald Knuth、Morris和Frank Pratt共同提出,其...

    数据结构(C语言)--模式匹配--KMP算法

    KMP(Knuth-Morris-Pratt)算法是解决这个问题的一种高效方法,尤其适用于在长字符串中查找重复或特定的子串。 KMP算法是由D.E. Knuth、V.R. Morris和J.H. Pratt三位学者在1970年代提出的。它的核心思想是避免了在...

    传统KMP算法与改进KMP算法的对比

    KMP算法,全称为Knuth-Morris-Pratt算法,是一种在字符串中寻找子串的高效搜索算法。它由D.E. Knuth、V. Morris和J.H. Pratt三位学者于1970年提出,主要用于解决模式匹配问题。传统的KMP算法避免了不必要的字符比较...

    使用KMP实现文本查找与替换

    ### 使用KMP算法实现文本查找与替换 #### KMP算法简介 KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,由Donald Knuth、James H. Morris和Vaughan Pratt共同提出。相较于朴素的字符串匹配方法,KMP算法...

    36KMP算法.zip

    《36KMP算法详解与应用》 36KMP算法,全称为“Knuth-Morris-Pratt”算法,是一种在字符串中高效查找子串出现位置的算法,由D.E. Knuth、V. Morris和J.H. Pratt三位学者在1970年代提出。该算法的核心在于构造一个...

    Python实现字符串匹配的KMP算法

    kmp算法 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串...

Global site tag (gtag.js) - Google Analytics