`
freshunter
  • 浏览: 16558 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

基本字符串匹配算法

阅读更多
//之前温习的字符串匹配KMP算法
    static int matchCount(String str, String sub)
    {
        char[] chStr = str.toCharArray();
        char[] chSub = sub.toCharArray();
        int count = 0;
        for(int i = 0; i < chStr.length; i++)
        {
            int j = 0;
            for(int k = i; j < chSub.length && k<chStr.length; j++,k++)
            {
                if(chStr[k] == chSub[j])
                {
                    continue;
                }
                else
                {
                    break;
                }
            }
            if(j == chSub.length)
            {
                count++;
            }
        }
        return count;
    }
    
    static int matchCountKMP(String str, String sub)
    {
        char[] chStr = str.toCharArray();
        char[] chSub = sub.toCharArray();
        int[] next = getnext(sub);
        int count = 0;
        for(int i = 0; i < chStr.length; )
        {
            int j = 0;
            while(j < chSub.length && i < chStr.length) 
            {
                if(chStr[i] == chSub[j])
                {
                    i++;j++;
                    continue;
                }
                else
                {
                    if(next[j] != -1)
                    {
                        j=next[j];
                    }
                    else
                    {
                        i++;
                        break;
                    }
                }
            }
            if(j == chSub.length)
            {
                count++;
            }
        }
        return count;
    }
    

    static int[] getnext(String sub)
    {
        char[] chSub = sub.toCharArray();
        int[] next = new int[chSub.length];
        next[0] = -1;
        for(int i = 1; i < chSub.length; i++)
        {
            if(next[i-1] == -1 || chSub[i-1] == chSub[next[i-1]]){
                next[i] = next[i-1] + 1;
            }
            else
            {
                next[i] = 0;
            }
        }
        return next;
    }

 

0
0
分享到:
评论
2 楼 lvwenwen 2013-04-04  
写一下注释吗
1 楼 xchd 2013-04-03  
能写一下注释吗

相关推荐

    带通配符的字符串匹配算法

    带通配符的字符串匹配算法则是这个领域的延伸,它允许在模式字符串中包含特殊字符,如星号(*)或问号(?),以表示任意字符或单个任意字符。这种算法使得搜索更加灵活,可以适应更复杂的查询需求。 **通配符的含义** -...

    实现并对比三种基本的字符串匹配算法

    首先对三种基本字符串匹配算法进行了详细分析和说明,再编程实现。创新拓展研究了Boyer-Moore算法,进行了分析和编程实现。让四种算法对数据量极大的文本,进行子串的查询处理,并分析算法运行时间效率,并对所有...

    字符串匹配算法C代码实现

    本篇文章将详细探讨四种常见的字符串匹配算法:平凡算法(SimpleSM)、KMP算法(KMPSM)、BM算法(bmSM)以及RK算法(rkSM),并分析它们的基本原理和C代码实现。 1. **平凡算法(SimpleSM)** 平凡算法是最基础的...

    字符串匹配算法总结

    这里我们将深入探讨几种常见的字符串匹配算法,包括Brute Force算法、KMP算法、Horspool算法以及Boyer-Moore算法。 1. **Brute Force算法**:这是最直观的字符串匹配方法,也被称为简单匹配。它将模式串与匹配串...

    字符串匹配算法小集(英文)

    通过对这35种不同字符串匹配算法的分析,我们不仅了解了各种算法的基本原理和应用场景,还能够根据具体需求选择最适合的算法来解决问题。随着计算机科学的发展,新的算法和技术仍在不断涌现,为解决实际问题提供了更...

    用C++实现BM的字符串模式匹配算法

    本篇文章将深入探讨如何使用C++实现Bad Character Rule(坏字符规则)和Good Suffix Rule(好后缀规则)来优化Boyer-Moore(BM)字符串匹配算法。BM算法以其高效的性能在文本搜索、数据挖掘等多个领域广泛应用。 ...

    PDF电子书《柔性字符串匹配》

    KMP算法是一种改进后的线性时间复杂度的字符串匹配算法。它通过预处理模式串生成next数组来避免重复比较,从而提高效率。时间复杂度为O(n+m)。 #### 2.3 Boyer-Moore算法 Boyer-Moore算法利用了两个重要的特性:坏...

    基于字符串模式匹配算法的病毒感染检测问题_算法_数据结构_

    字符串模式匹配算法在此过程中扮演了核心角色,因为它可以高效地查找可能的病毒签名或恶意代码序列。本话题将深入探讨如何利用C语言实现基于字符串模式匹配算法的病毒感染检测。 首先,我们需要了解字符串模式匹配...

    文件中字符串匹配算法C语言版

    在IT领域,字符串匹配算法是计算机科学中一个基础且重要的概念,特别是在文本处理、搜索引擎和数据挖掘等应用中。本项目关注的是一个C语言实现的文件中字符串匹配算法,其核心目标是读取名为"input.txt"的文件,根据...

    KMP/BM字符串匹配算法源码

    本文将详细解析三种常见的字符串匹配算法:Brute Force(暴力搜索)、KMP(Knuth-Morris-Pratt)以及BM(Boyer-Moore)。这些算法在文本处理、数据搜索、生物信息学等多个领域有着广泛的应用。 首先,让我们来了解...

    算法与数据结构 算法分析课程 第11章 字符串匹配 字符串匹配算法 KMP算法 共11页.pptx

    本章节将重点介绍字符串匹配的基本概念以及两种重要的算法——简单字符串匹配算法和KMP算法。 #### 一、简单字符串匹配算法 简单字符串匹配算法是最基础的一种方法,其基本思想是从文本串的第一个字符开始,逐个...

    字符串匹配之Sunday算法(英文原版)

    Sunday算法提供了一种高效的方法来解决子字符串匹配问题。通过对模式字符串进行预处理并利用特定的移动策略,它能够在很多情况下优于Boyer-Moore算法和其他经典算法。在实际应用中,Sunday算法尤其适用于英语文本的...

    基于字符串模式匹配算法的病毒感染检测问题 实验四(源代码+实验报告)

    本实验“基于字符串模式匹配算法的病毒感染检测问题”聚焦于如何利用这些算法来识别潜在的恶意代码,从而预防计算机病毒感染。 《数据结构(C语言版 第2版)》一书由著名计算机科学家严蔚敏编著,书中涵盖了各种...

    CUDA程序并行实现字符串匹配的操作

    字符串匹配是计算机科学中的一个基本问题,广泛应用于文本处理、搜索算法、生物信息学等领域。传统的串匹配算法如KMP(Knuth-Morris-Pratt)通常在单线程CPU上运行,但在大数据量或实时性要求高的情况下,这种效率...

    基于GPU加速的并行字符串匹配算法.pdf

    "基于GPU加速的并行字符串匹配算法" 本文主要介绍了基于GPU加速的并行字符串匹配算法,旨在解决大规模数据处理的速度问题。字符串匹配是计算机科学领域中的一个基本运算,也是拼写检查、语言翻译、数据压缩、搜索...

    Horspool字符串匹配输入增强技术

    Horspool字符串匹配算法是一种高效的线性时间复杂度的字符串查找算法,由Brian W. Horspool在1980年提出。本实验旨在通过增强Horspool算法,提高其在特定输入情况下的性能。 【描述】: 这个资源是针对算法分析...

    字符串匹配

    字符串匹配算法的发展见证了计算机科学领域的不断进步,从简单的BF算法到高效的BM算法和WM算法,每一步都体现了研究人员对算法性能的不懈追求。BM算法以其独特的后向匹配策略和跳跃机制,在单模式字符串匹配中树立了...

    基于GPU加速的快速字符串匹配算法.pdf

    【基于GPU加速的快速字符串匹配算法】 在信息技术领域,字符串匹配是一个至关重要的任务,广泛应用于搜索引擎、网络安全、病毒检测和生物信息学等多个方面。传统的字符串匹配算法如KMP、Shift-And、BM和BDM等虽然...

    KMP字符串匹配算法C语言实现[参考].pdf

    KMP字符串匹配算法C语言实现 KMP字符串匹配算法是一种高效的字符串匹配算法,它的主要思想是通过构建前缀表(prefix)来避免不必要的比较操作。该算法由Donald Knuth、Vaughan Pratt和Morris在1977年首次提出。 在...

Global site tag (gtag.js) - Google Analytics