`
shuaijie506
  • 浏览: 137773 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

javascript版的KMP算法

阅读更多

本想提高匹配效率,查资料写了个javascript版的KMP算法,写好后发现我需要的是拼音首字母匹配,不适用,暂存一下。

 

  1. function match(mainstr,srhstr){//KPM匹配算法,用于快速匹配字符串  
  2.     if(!mainstr||!srhstr)return -1;  
  3.     var l_mainstr=mainstr.length;  
  4.     var l_srhstr=srhstr.length;  
  5.     //构建失配后特征数组  
  6.     var k=0;  
  7.     var vec=new Array();  
  8.     vec[0]=-1;  
  9.     for(i=1;i<l_srhstr;i++){   
  10.         vec[i]=(srhstr[k]==srhstr[i])?vec[k]:k;  
  11.         if(srhstr[i]==srhstr[k])k++;  
  12.         else{k=(srhstr[i]==srhstr[0])?1:0;};  
  13.     }  
  14.     //查找子串  
  15.     i=j=0;  
  16.     while(i<l_mainstr){  
  17.         if(mainstr[i]==srhstr[j]){j++;i++;}  
  18.         else{  
  19.             if(vec[j]==-1){j=0;i++;}  
  20.             else{j=vec[j];}  
  21.         }  
  22.         //是否找到子串  
  23.         if(j==l_srhstr){  
  24.             return i-j;  
  25.         }  
  26.     }  
  27.     return -1;  
  28. }  
分享到:
评论

相关推荐

    基于JavaScript 实现的KMP 算法

    JavaScript KMP算法是一种在文本串(target)中查找模式串(pattern)的高效搜索算法,由D.E.Knuth、J.H.Morris和V.R.Pratt于1970年代提出,因此得名KMP算法。它避免了不必要的比较,通过预处理模式串来创建一个...

    对一个网页进行网址提取(KMP算法实现)

    在这个项目中,我们使用KMP算法来识别并提取网页中的URL。 KMP算法由唐纳德·克努斯、瓦伦·莫里斯和弗兰克·普拉特在1970年提出,它的核心思想是避免不必要的字符比较,减少回溯次数。KMP算法通过构建一个“部分...

    基于javascript实现的一些常用算法

    8. **字符串匹配**:KMP算法、Boyer-Moore算法是字符串匹配的经典算法,它们能够在大量文本中高效地查找子串。 9. **数据结构**:JavaScript中的数据结构如数组、链表、栈、队列、堆、哈希表、树等,是实现算法的...

    基于KMP算法JavaScript的实现方法分析

    在JavaScript中实现KMP算法,核心在于构建部分匹配表(也称为前缀函数或者失败函数)。部分匹配表记录了模式串(targetStr)中每个位置之前的子串中,有多大长度的相同前缀和后缀。这个表用于指导模式串在文本串...

    JavaScript实现不同的计算机科学算法

    - **KMP算法**:用于字符串匹配,避免不必要的回溯。 - **Rabin-Karp算法**:使用哈希函数快速查找字符串模式。 - **Trie树(字典树)**:高效存储和查找字符串集合。 7. **数据结构** - **栈**:后进先出...

    JavaScript实现的计算机科学算法.zip

    7. **字符串处理**:KMP算法、Rabin-Karp算法等,用于字符串匹配和模式查找。 8. **贪心算法**:在每一步选择局部最优解,期望得到全局最优解,如霍夫曼编码。 9. **分治算法**:将大问题分解为小问题求解,如快速...

    一些常用算法的JavaScript实践_JavaScript_下载.zip

    7. **字符串操作**:KMP算法、Rabin-Karp字符串匹配、Manacher's Algorithm等。这些算法用于高效地处理字符串匹配和模式查找问题。 8. **贪心算法**:通过局部最优解逐步构建全局最优解,如霍夫曼编码、活动选择...

    在JavaScript中实现的算法和数据结构,并附有进一步阅读的解释和链接.zip

    7. **字符串处理**:JavaScript提供了丰富的字符串API,但自定义的字符串操作,如KMP算法、Rabin-Karp算法等,对于字符串匹配问题很有用。 8. **堆优化**:如最小堆用于优先级队列,最大堆用于Top-K问题。 9. **位...

    前端大厂最新面试题-algorithm.docx

    前端大厂最新面试题-algorithm.docx 本文档涵盖了前端工程师...知识点:KMP算法介绍,使用JavaScript实现KMP算法。 94. 如何实现深度优先搜索和广度优先搜索? 知识点:搜索算法实现,使用JavaScript实现搜索算法。

    从 0 到 1 学习 JavaScript 数据结构与算法.zip

    7. 字符串匹配算法:如KMP算法、Boyer-Moore算法,用于在字符串中查找子串。 在实际开发中,理解并熟练运用这些数据结构和算法,可以让你编写出更高效、更优雅的代码。例如,在处理大量数据时,选择合适的数据结构...

    javascript,实现数据结构和算法题.zip

    7. 字符串匹配:KMP算法、Boyer-Moore算法等,用于在文本中寻找子串。 8. 图论算法:最短路径算法(Dijkstra、Floyd-Warshall)、最小生成树(Prim、Kruskal)等。 通过实践这些数据结构和算法,可以加深对它们的...

    JS算法数据结构精华集

    6. **字符串处理**:如 KMP 算法、Rabin-Karp 算法等用于模式匹配。 **三、JavaScript 面试题** 在面试中,常常会遇到与 JavaScript 相关的算法和数据结构题目,比如: 1. **字符串反转**:考察对字符串操作的...

    Algorithm-javascript-algorithms.zip

    6. **字符串处理**:如KMP算法、Trie树等,它们在文本匹配和搜索中发挥着重要作用。 7. **递归与回溯**:在解决复杂问题时,如八皇后问题、N皇后问题等,递归和回溯算法常常被用来生成所有可能的解决方案。 8. **...

    所有算法均以JavaScript实现-一个hacktoberfest2019项目-hacktoberfest2020或2.zip

    6. **字符串操作**:JavaScript中的字符串处理算法,如模式匹配、最长公共前缀、KMP算法等,这些都是文本处理和数据分析中的基础。 7. **数据结构**:栈、队列、链表、数组、哈希表、堆、图、树等。理解它们的特性...

    Javascript-leetcode:Javascript-leetcode 算法!算法!算法!

    8. **字符串处理**:模式匹配、正则表达式、KMP算法等。 9. **位操作**:高效地处理二进制数据,用于解决一些特殊问题。 通过深入学习和实践JavaScript LeetCode中的问题,开发者不仅可以巩固JavaScript语言基础,...

    algorithme-javascript-:javascript算法

    例如,KMP算法用于字符串匹配,Levenshtein距离计算字符串相似度。 10. 函数式编程中的算法:JavaScript支持函数式编程风格,这使得我们可以使用高阶函数、闭包和递归来实现复杂的算法,如柯里化、尾递归优化等。 ...

    AlgosInJS:用Javascript解决经典算法!

    9. 字符串算法:如KMP算法、Rabin-Karp滚动哈希和Manacher's Algorithm,用于字符串匹配和处理。 10. 数学算法:如欧几里得算法求最大公约数、费马小定理等,对于加密和密码学应用尤其重要。 通过"AlgosInJS"项目...

Global site tag (gtag.js) - Google Analytics