讨论/《初级算法》 - 实现 strStr()/
《初级算法》 - 实现 strStr()

`func strStr(haystack string, needle string) int {

if needle == "" {
	return 0
}

l1 := len(haystack)
l2 := len(needle)

var equal bool
var n int

if l2 > l1{
	return -1
}

for i := 0; i < l1; i++ {
	if haystack[i] == needle[0] && !equal{
		if l2 == 1 {
			return i
		}
		if l1 - i < l2 {
			return -1
		}
		n++
		equal = true
	} else {
		if !equal {
			continue
		}
		if  haystack[i] == needle[n] {
			if l1 - i < l2 - n{
				return - 1
			}
			if n == l2 -1 {
				return i - n
			}
			n++
		} else {
			i -= n
			n = 0
			equal = false
		}
	}
}
return -1

}`
企业微信截图_16198828868073.png

萌新留下足迹

展开全部 33 讨论