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