算法思路:
i为txt的指针
j为pattern的指针
当txt的i+j角标不等于pattern的j角标,那么就break结束这次配对,
然后i++,txt角标(i+j)再次和pattern的j角标(0)开始配对
循环结束后,如果j的角标==M长度,那么就证明匹配成功,
成功返回匹配成功的第一个字符串的角标
失败返回-1
public class search {
public static void main(String[] args) {
int index = search("ABACADABRAC", "ABRA");
System.out.println(index);
}
private static int search(String txt, String pattern) {
int N = txt.length();
int M = pattern.length();
for (int i = 0; i < N - M; i++) {
int j;
for (j = 0; j < M; j++) {
if (txt.charAt(i + j) != pattern.charAt(j))
break;
}
if (j == M)
return i;
}
return -1;
}
}
网友评论