蛮力法在字符串匹配问题中的应用
字符串匹配问题通常是给定一个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算法