`
lylegend13
  • 浏览: 82806 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

KMP

阅读更多
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package array;

/**
 *
 * @author liuyuan
 */
public class KMP_practice {

    int m, n, f[];
    String str, pat;

    public KMP_practice(String str, String pat) {
        this.str = str;
        this.pat = pat;
        m = pat.length();
        n = str.length();
        f = new int[m];
    }

    public void Fail() {
        f[0] = -1;
        int i;
        for (int j = 1; j < m; j++) {
            i = f[j - 1];
            while (pat.charAt(j) != pat.charAt(i + 1) && i != -1) {
                i = f[i];
            }
            if (pat.charAt(j) == pat.charAt(i + 1)) {
                f[j] = i + 1;
            } else {
                f[j] = -1;
            }
        }
    }

    public int FastFind() {
        Fail();
        int p = 0, s = 0;
        while (p < m && s < n) {
            if (pat.charAt(p) == str.charAt(s)) {
                p++;
                s++;
            } else if (p == 0) {
                s++;
            } else {
                p = f[p - 1] + 1;
            }
        }
        if (p == m) {
            return s - m;
        } else {
            return -1;
        }
    }

    public static void main(String[] args) {
        KMP_practice test = new KMP_practice("aaaaaba", "ab");
        System.out.println(test.FastFind());
    }
}

 

分享到:
评论
1 楼 gengu 2011-09-15  
你写代码注释都不带的??

相关推荐

    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算法实现模板(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.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算法的关键是利用匹配失败后的信息,尽量减少模式串...

    KMP算法c实现

    KMP(Knuth-Morris-Pratt)算法是一种在文本串(text)中查找模式串(pattern)出现位置的字符串匹配算法。它是由D.E. Knuth、V.R. Morris和J.H. Pratt于1977年提出的。KMP算法避免了模式串在匹配过程中不必要的字符...

    KMP字符串模式匹配算法ppt

    KMP(Knuth-Morris-Pratt)字符串模式匹配算法是一种高效的字符串搜索算法,由D.M. Knuth、V. Morris和J.H. Pratt在1970年提出。该算法避免了简单匹配算法中的不必要的回溯,显著提高了在文本字符串中查找模式字符串...

    KMP详解by july

    KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,由Donald Knuth、Vaughan Pratt和James H. Morris三人于1977年发表,因此得名。该算法能在O(n+m)的时间复杂度内完成对长度为n的文本串S和长度为m的模式串...

    KMP算法详解

    ### KMP算法详解 #### 1. 引言与背景 KMP算法是Knuth-Morris-Pratt算法的简称,是一种高效的字符串匹配算法。它主要用于解决在一个较长的文本串中寻找一个较短的模式串的问题。传统的暴力匹配算法虽然简单易懂,但...

Global site tag (gtag.js) - Google Analytics