写在前面:本文侧重诠释对算法的思考记录过程,忽略其他诸如代码简洁、字符编码等细节问题。
package main
import "fmt"
func main() {
str := "goauabcdislcdnabcdabcdvbuijdks"
target := "abcdabcd"
start1 := BfStr(str, target)
start2 := KmpStr(str, target)
fmt.Println(start1)
fmt.Println(start2)
}
//BF算法:暴力匹配算法或朴素匹配算法,即从被查找的主串的起始位置开始,依次向前比对每个位置上的字符,
//以找出与要查找的目标模式串值和数量都匹配的字符串
//算法复杂度:O(n*m) 注:n为主串的长度,m为模式串长度
func BfStr(str, target string) int {
n := len([]rune(str))
m := len([]rune(target))
j := 0
i := 0
start :=