BF算法
其思路很简单:从目标字符串初始位置开始,依次分别与模板的各个位置的字符比较,如相同,比较下一个位置的字符直至完全匹配;如果不同则跳到目标字符串下一位置继续如此与模板比较,直至找到匹配字符串并返回其位置。
我们注意到Brute Force 算法是每次移动一个单位,一个一个单位移动显然太慢,设目标串String的长度为m,Pattern的长度为n,不难得出BF算法的时间复杂度最坏为O(mn),效率很低。
/*
BF
*/
public class MyString {
String s1 = "abcdef";
String s2 = "ef";
public int BF(){
int lenS1 = s1.length() - s2.length();
int lenS2 = s2.length();
for(int i = 0; i <= lenS1; i++){
boolean flag = true;
for (int j = 0; j < lenS2; j++){
if(s1.charAt(i+j) != s2.charAt(j)){
flag = false;
break;
}
}
if(flag)
return i;
}
return -1;
}