28.找出字符串中第一个匹配项的下标
只看了滑动窗口法。
class Solution {
public int strStr(String haystack, String needle) {
int m = needle.length();
if(m== 0){
return 0;
}
int n = haystack.length();
if(n < m){
return -1;
}
int i = 0;
int j = 0;
while(i < n-m +1){
while(i < n && haystack.charAt(i) != needle.charAt(j)){
i++;
}
if(i ==n ){
return -1;
}
i++;
j++;
while(i < n && j< m && haystack.charAt(i) == needle.charAt(j)){
i++;
j++;
}
if(j == m){
return i - j;
}else{
i -= j - 1;
j = 0;
}
}
return -1;
}
}
该代码实现了一个方法,使用滑动窗口策略在给定的字符串(haystack)中寻找指定子串(needle)的第一个出现位置。如果找到,返回其下标;否则返回-1。首先检查子串长度,然后遍历haystack,用两个指针i和j分别表示窗口的开始和结束,当找到匹配字符时移动指针,直到找到完整匹配的子串。
267

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



