public class BF {
public static void main(String[] args) {
String str1 = "ababcababa";//父串
String str2 = "ababa";//被包含的子串
System.out.println("位置(不是下标):" + judgeBF(str1, str2));
}
static int judgeBF(String str1, String str2) {
char[] s = str1.toCharArray();
char[] t = str2.toCharArray();
int sIndex = 0; // 主串下标
int tIndex = 0; // 子串下标
int index = 0; // 要查找的位置
while (sIndex < s.length && tIndex < t.length) {
if (s[sIndex] == t[tIndex]) { //当两个字符相同,就继续比较下一个
sIndex++;
tIndex++;
} else { //不匹配则主串从下一个index匹配
index++;
sIndex = index;
tIndex = 0;
}
}
if (tIndex == t.length) {
return index + 1; //匹配成功,返归子串在主串中的第一个字符出现的位置
} else {
return -1; //最终匹配不成功,返回-1
}
}
}
java自定义方法查找子串在父串中的位置
最新推荐文章于 2024-12-09 09:14:24 发布
本文通过一个具体的Java代码示例,介绍了Boyer-Moore字符串搜索算法的实现方式。该算法用于在一个较长的字符串中查找一个较短的子串是否存在,以及其首次出现的位置。代码详细展示了如何通过比较字符来实现这一过程,对于理解Boyer-Moore算法的工作原理及其应用具有一定的参考价值。
1554

被折叠的 条评论
为什么被折叠?



