特點:
- 無預處理階段
- 最壞時間複雜度爲O((n-m+1)*m)
代碼:
/**
* @author yinglala
*
* 字符串匹配算法 暴力破解算法
*/
public class BF {
/**
* 暴力匹配算法
* @param str 主串
* @param sub 子串
* @param pos 主串初始遊標
* @return
*/
public static int bfStringMatch(String str,String sub ,int pos){
//1.判斷pos的合法性
if(pos < 0 || pos >= str.length()){
return -1;
}
//2.初始化兩個字符串游標
int i = pos;
int j = 0;
int strLen = str.length();
int subLen = sub.length();
//3.字符串匹配
while (i < (strLen - subLen + 1) && j < subLen){
if(str.charAt(i) == sub.charAt(j)){
i++;
j++;
}else{
i = i-j+1;
j = 0;
}
}
//4.根據遊標判斷字符串是否匹配
if(j == subLen){
return i - j;
}else{
return -1;
}
}
public static void main(String[] args){
String str = "ababccabcdabcde";
String sub = "abcdf";
System.out.println(bfStringMatch(str,sub,0));
}
}