dictionary.go
func (dict *Dictionary) Add(word string) (wasAdded bool) {
	if dict.root == nil {
		dict.root = &trieNode{}
	}

	cursor := dict.root

	for len(word) > 0 {
		if cursor.Children == nil {
			cursor.Children = make(map[rune]*trieNode)
		}

		nextLetter := rune(word[0])

		next, ok := cursor.Children[nextLetter]
		if !ok {
			next = &trieNode{}
			cursor.Children[nextLetter] = next
		}
		cursor = next
		word = word[1:]
	}
	wasAdded = !cursor.IsWord
	if wasAdded {
		dict.size++
	}
	cursor.IsWord = true
	return
}
func (dict *Dictionary) Add(word string) (wasAdded bool) {
	if dict.root == nil {
		dict.root = &trieNode{}
	}

	cursor := dict.root

	for len(word) > 0 {
		if cursor.Children == nil {
			cursor.Children = make(map[rune]*trieNode)
		}

		nextLetter := rune(word[0])

		next, ok := cursor.Children[nextLetter]
		if !ok {
			next = &trieNode{}
			cursor.Children[nextLetter] = next
		}
		cursor = next
		word = word[1:]
	}
	wasAdded = !cursor.IsWord
	if wasAdded {
		dict.size++
	}
	cursor.IsWord = true
	return
}
func ( dict * Dictionary ) Add ( word string ) ( wasAdded bool ) { if dict . root == nil { dict . root = & trieNode { } } cursor := dict . root for len ( word ) > 0 { if cursor . Children == nil { cursor . Children = make ( map [ rune ] * trieNode ) } nextLetter := rune ( word [ 0 ] ) next , ok := cursor . Children [ nextLetter ] if ! ok { next = & trieNode { } cursor . Children [ nextLetter ] = next } cursor = next word = word [ 1 : ] } wasAdded = ! cursor . IsWord if wasAdded { dict . size ++ } cursor . IsWord = true return }
// Add inserts a word into the dictionary, and returns whether or not that word was a new word.
//
// Time complexity: O(m) where 'm' is the length of word.
Add inserts a word into the dictionary and returns whether or not that word was a new word . Time complexity : O ( m ) where m is the length of word .