gpt4 book ai didi

go - 在golang中创建后缀树

转载 作者:IT王子 更新时间:2023-10-29 00:40:43 24 4
gpt4 key购买 nike

我有一个字符串数组,我需要在 Golang 中创建一个后缀树。Golang 中的 SuffixArray 不能满足我的需求,因为它只接受字节数组(即单个字符串)。任何人都可以提供实现指南。提前致谢。

最佳答案

这是一个如何使用后缀数组进行自动补全的例子。 (playground)。

请注意,我使用 \x00 前缀将所有字符串连接在一起,该前缀不能首先出现在字符串中。

package main

import (
"fmt"
"index/suffixarray"
"regexp"
"strings"
)

func main() {
words := []string{
"aardvark",
"happy",
"hello",
"hero",
"he",
"hotel",
}
// use \x00 to start each string
joinedStrings := "\x00" + strings.Join(words, "\x00")
sa := suffixarray.New([]byte(joinedStrings))

// User has typed in "he"
match, err := regexp.Compile("\x00he[^\x00]*")
if err != nil {
panic(err)
}
ms := sa.FindAllIndex(match, -1)

for _, m := range ms {
start, end := m[0], m[1]
fmt.Printf("match = %q\n", joinedStrings[start+1:end])
}
}

打印

match = "hello"
match = "hero"
match = "he"

关于go - 在golang中创建后缀树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com