28 找出字符串中第一个匹配项的下标-简单

题目:

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

分析:

单指针,逐位匹配。

超过匹配长度时,注意剪枝。

// date 2023/12/10
func strStr(haystack string, needle string) int {
    s1, s2 := len(haystack), len(needle)
    if s1 < s2 {
        return -1
    }
    for i := 0; i < s1; i++ {
        if i + s2 > s1 {
            return -1
        }
        left := i
        j := 0
        for j < s2 && haystack[left] == needle[j] {
            left++
            j++
        }
        if j == s2 {
            return i
        }
    }
    return -1
}

最后更新于