Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 63 additions & 8 deletions lib/practice_exercises.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,68 @@

# Time Complexity: ?
# Space Complexity: ?
require 'pry'
# Time Complexity: O(n) - as array size grows, the evaluation grows at the same rate

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since delete_at shifts all subsequent letters over one value to the left, and has a time complexity of O(n), your algorithm is O(n)

# 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: ?
# 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)
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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The order you are looking at things won't work for everything, consider:

strings = ["carborator","carvonulted","carsome", "calsome"]

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