119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/containers/trie.rb', line 119
def wildcard_recursive(node, string, index, prefix)
return nil if node.nil? || index == string.length
arr = []
char = string[index]
if (char.chr == "*" || char.chr == "." || char < node.char)
arr << wildcard_recursive(node.left, string, index, prefix)
end
if (char.chr == "*" || char.chr == "." || char > node.char)
arr << wildcard_recursive(node.right, string, index, prefix)
end
if (char.chr == "*" || char.chr == "." || char == node.char)
arr << "#{prefix}#{node.char.chr}" if node.last?
arr << wildcard_recursive(node.mid, string, index+1, prefix + node.char.chr)
end
arr
end
|