Skip to content

Instantly share code, notes, and snippets.

@crevier
Created December 14, 2017 13:06
Show Gist options
  • Save crevier/5c147b4119a4ab4fe3cadc4484eb5fba to your computer and use it in GitHub Desktop.
Save crevier/5c147b4119a4ab4fe3cadc4484eb5fba to your computer and use it in GitHub Desktop.
input = new Scanner(System.in);
N = input.nextInt()
numbers=[]
for (i = 0; i < N; ++i) {
numbers << input.next()
}
int numberOfDigit(List<String> phoneNumbers) {
masterNode = new Node('#')
phoneNumbers.each {
insertNumber(masterNode,it)
}
return masterNode.size()-1
}
def insertNumber(Node root,String number) {
parentNode = root
number.each { c ->
Node nextNode = parentNode.nodes.find { it.value == c }
if (nextNode == null) {
nextNode = new Node(c)
parentNode.nodes.add(nextNode)
}
parentNode = nextNode
}
}
class Node {
def value
def nodes = []
Node(def value) {
this.value=value
}
int size() {
return 1+ nodes.inject(0) { r, i -> r += i.size() }
}
}
println numberOfDigit(numbers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment