From c1f1d5ec47358d5025276da32b7c2fb7598c38b4 Mon Sep 17 00:00:00 2001 From: Ted Tran Date: Fri, 15 Jul 2022 00:38:03 -0700 Subject: [PATCH 1/2] 208 --- ruby/208-Implement-Trie.rb | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 ruby/208-Implement-Trie.rb diff --git a/ruby/208-Implement-Trie.rb b/ruby/208-Implement-Trie.rb new file mode 100644 index 000000000..106908b94 --- /dev/null +++ b/ruby/208-Implement-Trie.rb @@ -0,0 +1,38 @@ +class Trie + END_OF_WORD = 'END' + + def initialize + @root = {} + end + + def insert(word) + curr = @root + last_idx = word.length - 1 + word.each_char.with_index do |char, idx| + curr[char] ||= {} + curr = curr[char] + curr[END_OF_WORD] = true if last_idx == idx + end + nil + end + + def search(word) + curr = @root + word.each_char do |char| + return false unless curr[char] + + curr = curr[char] + end + !!curr[END_OF_WORD] + end + + def starts_with(prefix) + curr = @root + prefix.each_char do |char| + return false unless curr[char] + + curr = curr[char] + end + true + end +end From a714949291f6e976bc94f3d7aaefaf57856bb6ed Mon Sep 17 00:00:00 2001 From: "Ted H. Tran" Date: Fri, 15 Jul 2022 00:51:58 -0700 Subject: [PATCH 2/2] Update 208-Implement-Trie.rb Revised to remove unnecessary last_idx --- ruby/208-Implement-Trie.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ruby/208-Implement-Trie.rb b/ruby/208-Implement-Trie.rb index 106908b94..0d756812a 100644 --- a/ruby/208-Implement-Trie.rb +++ b/ruby/208-Implement-Trie.rb @@ -7,12 +7,11 @@ def initialize def insert(word) curr = @root - last_idx = word.length - 1 - word.each_char.with_index do |char, idx| + word.each_char do |char| curr[char] ||= {} curr = curr[char] - curr[END_OF_WORD] = true if last_idx == idx end + curr[END_OF_WORD] = true nil end