最近刚好再看数据结构与算法,就照着视频里的还原了一下,只不过要注意的是这里数组的下标是从开始的
/**
* 使用java模拟暴力匹配算法
* @author HuangSir
* @create 2021-05-15 8:46
*/
public class 暴力匹配模拟 {
public static void main(String[] args) {
String s="aaaaab";
String t = "aaab";
System.out.println("子串第一个字符所在下标为"+getIndex(s, t));
}
public static int getIndex(String s,String t){
//定义两个指针
int i=0;
int j=0;
while (i<s.length()&&j<t.length()){//当两个指针都没有超过对应主串/子串的长度时
if (s.charAt(i)==t.charAt(j)){//如果两个位置上的字符相等,就往后继续判断
i++;
j++;
}else {//如果有不相等的则
i=i-j+1;//外层指针回溯
j=0;//内层指针归0
}
}
//跳出循环的条件是i或者j的其中一个全部扫描完(超出长度)
if(j>=t.length()){//如果j超出了子串的长度,说明子串全部匹配上了主串
return i-t.length();
}else {
return 0;
}
}
}