package main
import "fmt"
func main () {
fmt.Println("Hello JSRUN! \n\n - from Golang .")
p := "abcabe"
s := "abcabfabcabef"
next := make([]int, len(p))
next[0] = -1
fmt.Println(next)
j := -1
for i := 1; i < len(p); i++ {
for j != -1 && p[i] != p[j+1] {
j = next[j]
}
if p[i] == p[j+1] {
j ++
}
next[i] = j
}
fmt.Println(next)
j = -1
for i := 0; i < len(s); i++ {
for j != -1 && s[i] != p[j+1] {
j = next[j]
}
if s[i] == p[j+1] {
j ++
}
if j == len(p)-1 {
fmt.Printf("find %s in %s, index is %d", p, s, i-j)
j = next[j]
}
}
}