Go 实现多模式字符串匹配的 AC 自动机

2019-03-08 12:50:10 +08:00
 zhengji

背景:

工作之余发散学习了 AC 自动机,学习用的是 C++版本。毕业多年才搞懂,惭愧,智商捉急。为了加深理解。用 Go 语言撸了一个 goAcAutoMachine 库。当做总结

Go 实现多模式字符串匹配的 AC 自动机

Install

go get "github.com/zheng-ji/goAcAutoMachine"

Example

package main

import (
    "fmt"
    "github.com/zheng-ji/goAcAutoMachine"
)

func main() {
    ac := goAcAutoMachine.NewAcAutoMachine()
    ac.AddPattern("红领巾")
    ac.AddPattern("祖国")
    ac.AddPattern("花朵")
    ac.Build()

    content := "我是红领巾,祖国未来的花朵"
    results := ac.Query(content)
    for _, result := range results {
        fmt.Println(result)
    }
}
2877 次点击
所在节点    Go 编程语言
1 条回复
meowhuang
2019-03-08 13:21:51 +08:00
要不要来个后缀数组、后缀树?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/542467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX