蛮力法在字符串匹配问题中的应用
字符串匹配问题通常是给定一个n个字符组成的串(称为文本),一个m(m<=n)个字符的串(称为模式),从文本中寻找匹配模式的子串。显然我们需要逐个匹配,这是蛮力算法的典型特点。
蛮力匹配:时间复杂度O(n^2)
public class Main {public static void main(String[] args) {String[] a = {"a","b","c","d","e","f","g","h"};String[] b = {"e","f"};int flag = 0;for (int i = 0; i < a.length-b.length; i++) {int j = 0;while (j < b.length && b[j] == a[i+j]) {j = j+1;if (j == b.length-1) {flag = 1;System.out.println(i);}}}if (flag == 0) {System.out.println("no find");}}
}
发现问题:这样的蛮力方法对于文本中的每个字母都会进行匹配,而这无疑增加了许多冗余的比较
优化思路:KMP算法