字符串暴力匹配算法
这个算法用到了字符串的charAt()方法,用来检测后一个字符串能否在前一个字符串中匹配到,如果有,返回第一个正确匹配字符的位置,否则返回-1。
具体怎么匹配的呢?我们有两个指针,i指针在第一个字符串,j指针在第二个字符串。当两个指针都在字符串范围内,i指针先和j指针指向的内容比较,如果相等,进入匹配模式,i走一步,j走一步,再比较,如果匹配完后,j的数值等于b字符串的长度,那不就是说明a字符串中有b吗,所以返回i-j也就是进入匹配的那个位置。如果在匹配过程中a.charAt(i)==b.charAt(j)不成立,那就是匹配不正确,这时i=i-j+1,也就是i指针退回到原来的位置,然后再走一步,因为原来的位置进入匹配不对嘛。j=0;j指针归零,直到进入匹配模式才会j++;
来个图例:
测试代码如下:
public class Test {
public static void main(String[] args) {
System.out.println( getIndex("aaadminaaaadminrootaaa", "adminroot")); //10
}
static int getIndex(String a,String b) {
int i=0,j=0;
while(i<a.length()&&j<b.length()) {
if(a.charAt(i)==b.charAt(j)) {
i++;
j++;
}
else {
i=i-j+1;
j=0;
}
}
//证明a中含有b
if(j==b.length()) {
return i-j;
}
else {
return -1;
}
}
}