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开始计数