public class _28_实现_strStr_简单 {
public static void main(String[] args) {
//判断needle这个字符串在haystack中的位置,位置按照第一个字符的位置
int i = strStr("hello", "ll");
System.out.println(i);
}
public static int strStr(String haystack, String needle) {
int L = needle.length(), n = haystack.length();
for (int start = 0; start < n - L + 1; ++start) {
if (haystack.substring(start, start + L).equals(needle)) {
return start;
}
}
return -1;
}
}
思路很简单
有两个字符串
假设a字符串是 hello
b字符串是ll
那么,b是a的子集,并且出现的第一个位置是2
所以我们要比较的就是按照,b字符串的长度2去进行比较
也就是
he和ll比较发现不匹配
el和ll去比较,发现不匹配
ll和ll去比较,匹配成功
这是ll中第一个字符l的位置是2,所以应该返回2
通过for循环去控制比较的顺序,并且需要注意的是
for(int start=0; start<n-L+1;++start)
从零开始比较,然后hello的长度是是4(因为是从0开始记位),所以每次匹配的长度就是2,所以要加1,因为是从0开始计数

该博客介绍了如何在Java中实现字符串查找算法`strStr()`。通过遍历haystack字符串并使用substring方法比较与needle的每个可能的起始位置,找到匹配时返回起始索引。当找不到匹配时返回-1。此算法适用于寻找一个字符串在另一个字符串中的首次出现位置。
1万+

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



