1234567891011121314151617181920212223242526272829303132 |
- package stringx
- type node struct {
- children map[rune]*node
- end bool
- }
- func (n *node) add(word string) {
- chars := []rune(word)
- if len(chars) == 0 {
- return
- }
- nd := n
- for _, char := range chars {
- if nd.children == nil {
- child := new(node)
- nd.children = map[rune]*node{
- char: child,
- }
- nd = child
- } else if child, ok := nd.children[char]; ok {
- nd = child
- } else {
- child := new(node)
- nd.children[char] = child
- nd = child
- }
- }
- nd.end = true
- }
|