重学算法 系列4 - 朴素字符串匹配算法 (Brute Force算法)
2009-11-15 22:23
351 查看
朴素字符串算法通过两层循环来寻找子串,好像是一个包含模式的“模板”沿待查文本滑动。
public class BruteForce { /** 从主串S的第pos个字符起与模式串进行比较,匹配不成功时,从主串S的第pos+1个字符重新与模式串进行比较。 如果主串S的长度是n,模式串长度是 m,那么Brute-Force的时间复杂度是o(m*n)。 最坏情况出现在模式串的子串频繁出现在主串S中。虽然它的时间复杂度为o(m*n),但在一般情况下匹配时间为o(m+n),因此在实际中它被大量使用。 该方法的优点是:算法简单明朗,便于实现记忆。 该方法的缺点是:进行了回溯,效率不高,而这些都是没有必要的。 */ public static void main(String[] args) { String waitForMatch = "abbacbabcbac"; String pattern = "abc"; int stringLength = waitForMatch.length(); int patternLength = pattern.length(); for (int i = 0; i < stringLength; i++) { // k point to the current postion int k = i; for (int j = 0; j < patternLength; j++) { if (waitForMatch.charAt(k) != pattern.charAt(j)) { break; } else { // OK, here is the last char if (j == (patternLength - 1)) { System.out.println("Find pattern at position " + i); return; } else { // go to next char k++; continue; } } } } System.out.println("Can't Find pattern"); } }
相关文章推荐
- 【C语言】朴素字符串匹配算法及其实现
- 字符串匹配朴素算法
- 3. 字符串匹配算法:朴素的匹配算法、KMP算法。
- [算法系列之十四]字符串匹配之Morris-Pratt字符串搜索算法
- 字符串匹配的KMP算法和朴素算法,及其python实现
- 算法——字符串匹配之朴素匹配算法
- 算法系列笔记9(字符串匹配)
- 传统字符串匹配算法--Brute Force算法的C代码实现
- 算法-朴素字符串匹配
- 字符串匹配之朴素算法和通配符扩展
- 算法——字符串匹配之朴素算法
- 第32章:字符串匹配问题: 朴素算法,Rabin-Karp算法
- 字符串匹配算法 之 朴素字符串匹配
- 字符串匹配之朴素算法和通配符扩展
- 算法 字符串匹配之朴素算法和KMP算法及JAVA代码实现
- 字符串匹配的朴素算法和KMP算法
- 字符串匹配——朴素算法、KMP算法
- [算法系列之十二]字符串匹配之蛮力匹配
- LeetCode Implement strStr()(朴素的字符串匹配,RK算法,KMP算法)
- 字符串匹配算法 朴素算法 Rabin—Karp算法,KMP算法