原理
首先将原字符串和子串左端对齐,逐一比较;如果第一个字符不能匹配,则子串向后移动一位继续比较;如果第一个字符匹配,则继续比较后续字符,直至全部匹配。
时间复杂度
时间复杂度:O(MN)
示例
实现 strStr()
代码实现
func strStr(haystack string, needle string) int {
needleLen := len(needle)
if needleLen == 0 {
return 0
}
idx, e, hlen := -1, false, len(haystack)
for i, _ := range haystack {
if i+needleLen > hlen {
break
}
e = true
for i2, _ := range needle {
if haystack[i+i2] != needle[i2] {
e = false
break
}
}
if e {
idx = i
break
} else {
continue
}
}
return idx
}