本想提高匹配效率,查资料写了个javascript版的KMP算法,写好后发现我需要的是拼音首字母匹配,不适用,暂存一下。
- function match(mainstr,srhstr){
- if(!mainstr||!srhstr)return -1;
- var l_mainstr=mainstr.length;
- var l_srhstr=srhstr.length;
-
- var k=0;
- var vec=new Array();
- vec[0]=-1;
- for(i=1;i<l_srhstr;i++){
- vec[i]=(srhstr[k]==srhstr[i])?vec[k]:k;
- if(srhstr[i]==srhstr[k])k++;
- else{k=(srhstr[i]==srhstr[0])?1:0;};
- }
-
- i=j=0;
- while(i<l_mainstr){
- if(mainstr[i]==srhstr[j]){j++;i++;}
- else{
- if(vec[j]==-1){j=0;i++;}
- else{j=vec[j];}
- }
-
- if(j==l_srhstr){
- return i-j;
- }
- }
- return -1;
- }
分享到:
相关推荐
JavaScript KMP算法是一种在文本串(target)中查找模式串(pattern)的高效搜索算法,由D.E.Knuth、J.H.Morris和V.R.Pratt于1970年代提出,因此得名KMP算法。它避免了不必要的比较,通过预处理模式串来创建一个...
在这个项目中,我们使用KMP算法来识别并提取网页中的URL。 KMP算法由唐纳德·克努斯、瓦伦·莫里斯和弗兰克·普拉特在1970年提出,它的核心思想是避免不必要的字符比较,减少回溯次数。KMP算法通过构建一个“部分...
8. **字符串匹配**:KMP算法、Boyer-Moore算法是字符串匹配的经典算法,它们能够在大量文本中高效地查找子串。 9. **数据结构**:JavaScript中的数据结构如数组、链表、栈、队列、堆、哈希表、树等,是实现算法的...
在JavaScript中实现KMP算法,核心在于构建部分匹配表(也称为前缀函数或者失败函数)。部分匹配表记录了模式串(targetStr)中每个位置之前的子串中,有多大长度的相同前缀和后缀。这个表用于指导模式串在文本串...
- **KMP算法**:用于字符串匹配,避免不必要的回溯。 - **Rabin-Karp算法**:使用哈希函数快速查找字符串模式。 - **Trie树(字典树)**:高效存储和查找字符串集合。 7. **数据结构** - **栈**:后进先出...
7. **字符串处理**:KMP算法、Rabin-Karp算法等,用于字符串匹配和模式查找。 8. **贪心算法**:在每一步选择局部最优解,期望得到全局最优解,如霍夫曼编码。 9. **分治算法**:将大问题分解为小问题求解,如快速...
7. **字符串操作**:KMP算法、Rabin-Karp字符串匹配、Manacher's Algorithm等。这些算法用于高效地处理字符串匹配和模式查找问题。 8. **贪心算法**:通过局部最优解逐步构建全局最优解,如霍夫曼编码、活动选择...
7. **字符串处理**:JavaScript提供了丰富的字符串API,但自定义的字符串操作,如KMP算法、Rabin-Karp算法等,对于字符串匹配问题很有用。 8. **堆优化**:如最小堆用于优先级队列,最大堆用于Top-K问题。 9. **位...
前端大厂最新面试题-algorithm.docx 本文档涵盖了前端工程师...知识点:KMP算法介绍,使用JavaScript实现KMP算法。 94. 如何实现深度优先搜索和广度优先搜索? 知识点:搜索算法实现,使用JavaScript实现搜索算法。
7. 字符串匹配算法:如KMP算法、Boyer-Moore算法,用于在字符串中查找子串。 在实际开发中,理解并熟练运用这些数据结构和算法,可以让你编写出更高效、更优雅的代码。例如,在处理大量数据时,选择合适的数据结构...
7. 字符串匹配:KMP算法、Boyer-Moore算法等,用于在文本中寻找子串。 8. 图论算法:最短路径算法(Dijkstra、Floyd-Warshall)、最小生成树(Prim、Kruskal)等。 通过实践这些数据结构和算法,可以加深对它们的...
6. **字符串处理**:如 KMP 算法、Rabin-Karp 算法等用于模式匹配。 **三、JavaScript 面试题** 在面试中,常常会遇到与 JavaScript 相关的算法和数据结构题目,比如: 1. **字符串反转**:考察对字符串操作的...
6. **字符串处理**:如KMP算法、Trie树等,它们在文本匹配和搜索中发挥着重要作用。 7. **递归与回溯**:在解决复杂问题时,如八皇后问题、N皇后问题等,递归和回溯算法常常被用来生成所有可能的解决方案。 8. **...
6. **字符串操作**:JavaScript中的字符串处理算法,如模式匹配、最长公共前缀、KMP算法等,这些都是文本处理和数据分析中的基础。 7. **数据结构**:栈、队列、链表、数组、哈希表、堆、图、树等。理解它们的特性...
8. **字符串处理**:模式匹配、正则表达式、KMP算法等。 9. **位操作**:高效地处理二进制数据,用于解决一些特殊问题。 通过深入学习和实践JavaScript LeetCode中的问题,开发者不仅可以巩固JavaScript语言基础,...
例如,KMP算法用于字符串匹配,Levenshtein距离计算字符串相似度。 10. 函数式编程中的算法:JavaScript支持函数式编程风格,这使得我们可以使用高阶函数、闭包和递归来实现复杂的算法,如柯里化、尾递归优化等。 ...
9. 字符串算法:如KMP算法、Rabin-Karp滚动哈希和Manacher's Algorithm,用于字符串匹配和处理。 10. 数学算法:如欧几里得算法求最大公约数、费马小定理等,对于加密和密码学应用尤其重要。 通过"AlgosInJS"项目...