/**
* Brute-Force(BF,暴力匹配,模式匹配)
*/
public class Main {
public static void main(String[] args) {
//1.定义并初始化主串
String S="WSNBasaWHSXTNB";
//2.定义并初始化模式串
String T="WHSXT";
System.out.println(bfSearch(S,T));
}
/**
*
* @param s 主串
* @param t 模式串
* @return 模式串在主串第一次出现的索引位置
*/
private static int bfSearch(String s,String t){
//x表示主串第一个字符的起始位置
int x=0;
//y表示模式串第一个字符的起始位置
int y=0;
//定义一个循环,用来实现字符串的匹配算法
while(x<s.length()&&y<t.length()){
//如果相等,则继续比较后续字符
if(s.charAt(x)==t.charAt(y)){
x++;
y++;
}
//如果不相等,从主串的下一个字符起,重新与模式串的第一个字符比较
else{
//回溯到主串下一个字符的计算公式
x=x-y+1;
y=0;
}
}
if(y==t.length()){
//如果模式串的字符全部比较完毕,则证明匹配成功,返回本趟比较主串的开始位置
return x-y;
}
//否则匹配失败,返回-1;
else{
return -1;
}
}
}