算法:字符串匹配算法整理
2017-03-07 21:17
309 查看
一、定义
字符串模式匹配算法(string searching/matchingalgorithms):就是在一个文本或者较长的一段字符串中,找出一个或多个指定字符串(Pattern),并返回其位置。这类算法属基础算法,各种编程语言都将其包括在自带的String类函数中,而且由之衍生出来的正则表达式也是必须掌握的一种概念和编程技术。二、常见算法
Brute-Force 算法KMP 算法
Boyer-Moore 算法
Sunday 算法
2.1、Brute-Force 算法
其思路很简单:从目标字符串初始位置开始,依次分别与Pattern的各个位置的字符比较,如相同,比较下一个位置的字符直至完全匹配;如果不同则跳到目标字符串下一位置继续如此与Pattern比较,直至找到匹配字符串并返回其位置。 我们注意到Brute Force 算法是每次移动一个单位,一个一个单位移动显然太慢,设目标串String的长度为m,Pattern的长度为n,不难得出BF算法的时间复杂度最坏为O(mn),效率很低。 代码也很简单,如下所示(Java)。/*** * Brute-Force算法 * * @param source * @param pattern * @return */ public static int BruteForceMatch(String source, String pattern){ int index = -1; boolean match = true; for (int i = 0 , length = source.length() - pattern.length(); i < length; i ++){ match = true; for(int j = 0; j < pattern.length(); j ++){ if (source.charAt(i + j) != pattern.charAt(j)) { match = false; break; } } if (match) { index = i; break; } } return index; }
参考致谢:
(1)、http://blog.csdn.net/chndata/article/details/43792363
相关文章推荐
- 字符串匹配算法-KMP整理(英文)
- 字符串匹配整理(算法导论 c32, v3)
- 经典算法整理之字符串匹配
- 字符串匹配算法
- 字符串匹配算法
- 字符串匹配算法:KMP算法与BM算法比较
- 字符串匹配算法总结
- 字符串匹配(string matching)算法之一 (Naive and Rabin_Karp)
- 扩展字符串匹配-BNDM算法扩展
- 关于字符串匹配的算法(一)
- 字符串匹配之朴素算法和通配符扩展
- 字符串匹配算法-kmp
- 程序员面试题精选(52):字符串匹配实现(回溯与不回溯算法)
- 几种字符串匹配算法性能简单实验对比
- BM字符串匹配算法
- kmp字符串匹配算法
- 最长字符串匹配算法(KMP算法)
- 字符串匹配算法研究(二)
- BM(Boyer-Moore)字符串匹配算法的实现(一种有效常用的字符串匹配算法)
- 字符串匹配算法-有限状态机