/**
 * 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;
        }
    }
}