From 1a2d3c20a58c726ab958312eb5788e725436b459 Mon Sep 17 00:00:00 2001 From: C Gutierrez Date: Sun, 15 Sep 2019 21:48:44 -0700 Subject: [PATCH 1/2] exercises pass test to remove duplicates and list characters that are shared in a collection of strings --- lib/practice_exercises.rb | 66 +++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/lib/practice_exercises.rb b/lib/practice_exercises.rb index 291e4e6..3a57e4c 100644 --- a/lib/practice_exercises.rb +++ b/lib/practice_exercises.rb @@ -1,13 +1,67 @@ - -# Time Complexity: ? -# Space Complexity: ? +require 'pry' +# Time Complexity: O(n) - as array size grows, the evaluation grows at the same rate +# Space Complexity: O(1) - no new data structures are being made def remove_duplicates(list) - raise NotImplementedError, "Not implemented yet" + if list.length == 1 + return list + end + + i = 0 + + list.each do |number| + if number[i+1] == number[i] + list.delete_at(i) + else + i += 1 + end + end + + return list + end # Time Complexity: ? # Space Complexity: ? + +# strings being passed in is an array of strings def longest_prefix(strings) - raise NotImplementedError, "Not implemented yet" + + max_length = strings[0].length + + return_statement = nil + + strings.each do |string| + if string.length > 0 && string.length < max_length + max_length = string.length + elsif string.length == 0 + return_statement = "" + end + end + + if return_statement != nil + return return_statement + end + + i = 0 # I am the word you're on + j = 0 # I am the character you're on + k = 0 # I am the last characer that matched + # binding.pry + until j == max_length || i + 1 == strings.length do + if strings[i][j] == strings[i + 1][j] + i += 1 + j += 1 + k = j + else + k -= 1 + break + end + + end + + if k < 0 + return "" + else + return_statement = strings[0][0...k] + return return_statement + end end - From 96e39e55a879a4b02d98256e67e5c69249caa86a Mon Sep 17 00:00:00 2001 From: C Gutierrez Date: Sun, 15 Sep 2019 21:50:43 -0700 Subject: [PATCH 2/2] Added time and space complexity to common prefix problem --- lib/practice_exercises.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/practice_exercises.rb b/lib/practice_exercises.rb index 3a57e4c..1f5c3a3 100644 --- a/lib/practice_exercises.rb +++ b/lib/practice_exercises.rb @@ -20,8 +20,8 @@ def remove_duplicates(list) end -# Time Complexity: ? -# Space Complexity: ? +# Time Complexity: O(n) - Although there are several loops, they are both proportional to the array being tested +# Space Complexity: O(1) - no new data structures are being made # strings being passed in is an array of strings def longest_prefix(strings) @@ -45,6 +45,7 @@ def longest_prefix(strings) i = 0 # I am the word you're on j = 0 # I am the character you're on k = 0 # I am the last characer that matched + # binding.pry until j == max_length || i + 1 == strings.length do if strings[i][j] == strings[i + 1][j]