diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..10f4d43 Binary files /dev/null and b/.DS_Store differ diff --git a/lib/reverse_sentence.rb b/lib/reverse_sentence.rb index 3fe7cac..6a6a324 100644 --- a/lib/reverse_sentence.rb +++ b/lib/reverse_sentence.rb @@ -1,6 +1,27 @@ # A method to reverse the words in a sentence, in place. -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n^2) where n is the length of string +# Space complexity: O(n) where n is the length of string + def reverse_sentence(my_sentence) - raise NotImplementedError -end + if my_sentence == nil + return nil + end + + char_count = 0 + position_count = my_sentence.length + 1 + + while char_count < my_sentence.length + if my_sentence[0] != " " + my_sentence.insert(position_count - 1, my_sentence[0]) + my_sentence[0] = "" + char_count += 1 + else + position_count = my_sentence.length-char_count + my_sentence.insert(position_count, " ") + my_sentence[0] = "" + char_count += 1 + end + end + + return my_sentence +end \ No newline at end of file diff --git a/lib/sort_by_length.rb b/lib/sort_by_length.rb index a5713ad..e307349 100644 --- a/lib/sort_by_length.rb +++ b/lib/sort_by_length.rb @@ -1,7 +1,22 @@ # A method which will return an array of the words in the string # sorted by the length of the word. -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n^2) where n is the length of array +# Space complexity: O(n) where n is length of string/array def sort_by_length(my_sentence) - raise NotImplementedError, "Method not implemented" + # using bubble sort + sentence_in_array = my_sentence.split(" ") + i = 0 + while i < sentence_in_array.length-1 + j = 0 + while j < sentence_in_array.length-i-1 + if sentence_in_array[j].length > sentence_in_array[j+1].length + temp = sentence_in_array[j] + sentence_in_array[j] = sentence_in_array[j+1] + sentence_in_array[j+1] = temp + end + j += 1 + end + i += 1 + end + return sentence_in_array end diff --git a/test/reverse_sentence_test.rb b/test/reverse_sentence_test.rb index 346069b..02400d2 100644 --- a/test/reverse_sentence_test.rb +++ b/test/reverse_sentence_test.rb @@ -4,70 +4,70 @@ describe "basic tests" do it "reverse a sentence with two words" do test_string = "hello, world" - + reverse_sentence(test_string) - + test_string.must_equal "world hello," end - + it "reverse a sentence with three words" do test_string = "Yoda is awesome!" - + reverse_sentence(test_string) - + test_string.must_equal "awesome! is Yoda" end end - + # check for edge cases describe "edge cases" do # if it's a string parameter, check for empty it "reverse an empty sentence" do test_string = "" - + reverse_sentence(test_string) - + test_string.must_be_empty end - + # if the parameter is an object, check for nil it "nil object passed to sentence reverse" do test_string = nil - + reverse_sentence(test_string) - + test_string.must_be_nil end - + it "reverse a sentence with one word" do test_string = "world" - + reverse_sentence(test_string) - + test_string.must_equal "world" end - + it "reverse a sentence with multiple words" do test_string = "I'm a better engineer today than I was yesterday." - + reverse_sentence(test_string) - + test_string.must_equal "yesterday. was I than today engineer better a I'm" end - + it "reverse a sentence with multiple spaces between words" do test_string = "How do you like them apples?" - + reverse_sentence(test_string) - + test_string.must_equal "apples? them like you do How" end - + it "reverse a sentence with preceeding and trailing white spaces" do test_string = " I can do this! " - + reverse_sentence(test_string) - + test_string.must_equal " this! do can I " end end diff --git a/test/sort_by_length.rb b/test/sort_by_length_test.rb similarity index 99% rename from test/sort_by_length.rb rename to test/sort_by_length_test.rb index c38d976..1eb292f 100644 --- a/test/sort_by_length.rb +++ b/test/sort_by_length_test.rb @@ -8,11 +8,11 @@ it "will return an array of words, by length" do expect(sort_by_length("I love Ada")).must_equal ["I", "Ada", "love"] end - + it "will return an array of words by length, words that are of equal length will appear in the order they appear" do expect(sort_by_length("words of equal length")).must_equal ["of", "words", "equal", "length"] end - + it "will return an array of words by length, words that are of equal length will appear in the order they appear" do expect(sort_by_length("I love great awesome words")).must_equal ["I", "love", "great", "words", "awesome"] end