【23.找出字符串中第一个匹配项的下标】

75 阅读1分钟

题目

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回  -1

示例 1:

输入: haystack = "sadbutsad", needle = "sad"
输出: 0
解释: "sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。

题解

方式一:滑动窗口思想(固定大小)

复杂度:O(n)

public int strStr(String haystack, String needle) {
    if (!haystack.contains(needle)) {
        return -1;
    }
    int len = needle.length(); // 窗口大小
    for (int i = 0; i <= haystack.length() - len; i++) {
        if (haystack.substring(i, i + len).equals(needle)) {
            return i;
        }
    }
    return -1;
}

总结

算法:滑动窗口