diff --git a/lib/practice_exercises.rb b/lib/practice_exercises.rb index 291e4e6..ad82519 100644 --- a/lib/practice_exercises.rb +++ b/lib/practice_exercises.rb @@ -1,13 +1,34 @@ -# Time Complexity: ? -# Space Complexity: ? +# Time Complexity: O(n^2) +# Space Complexity: O(1) def remove_duplicates(list) - raise NotImplementedError, "Not implemented yet" + list.each do |i| + if list[i] == list[i + 1] + list.delete_at(i) + end + end + return list end -# Time Complexity: ? -# Space Complexity: ? +# Time Complexity: O(n) +# Space Complexity: O(1) def longest_prefix(strings) - raise NotImplementedError, "Not implemented yet" + loops = (strings.length) - 1 + comparison_word = strings[0] + + loops.times do |i| + prefix = "" + counter = 0 + + strings[i + 1].each_char do |letter| + if letter == comparison_word[counter] + prefix<<(letter) + end + counter += 1 + end + comparison_word = prefix + end + + return comparison_word end diff --git a/test/practice_exercises_test.rb b/test/practice_exercises_test.rb index 4d0bc10..0aaabc9 100644 --- a/test/practice_exercises_test.rb +++ b/test/practice_exercises_test.rb @@ -9,34 +9,34 @@ it "works for empty arrays" do expect(remove_duplicates([])).must_equal [] end - + it "will remove duplicates for longer arrays" do expect(remove_duplicates([1, 2, 2, 3, 3, 4]).reject{|num| num == nil }).must_equal [1, 2, 3, 4] end end - + describe "Longest valid substring" do it "will work for the README strings" do strings = ["flower","flow","flight"] - + output = longest_prefix(strings) - + expect(output).must_equal "fl" end - + it "will work for the strings with the common prefix in the rear" do strings = ["flower","flow","flight", "fpastafl"] - + output = longest_prefix(strings) - + expect(output).must_equal "f" end - + it "will work for the README strings" do strings = ["dog","racecar","car"] - + output = longest_prefix(strings) - + expect(output).must_equal "" end end