Conversation
CheezItMan
left a comment
There was a problem hiding this comment.
Overall nice work, you hit the learning goals here. Well done. Check my comments below especially with regard to time/space complexity. You also have one bug in count_digits. Let me know if you have questions.
|
|
||
| # e.g. fact(4) = 4 * 3 * 2 * 1 = 24 | ||
|
|
||
| def factorial(n) |
| def reverse(s) | ||
| raise NotImplementedError, "Method not implemented" | ||
| if (s != "") | ||
| return s[-1] + reverse(s[0...-1]) |
There was a problem hiding this comment.
s[1..-1] creates a new array and copies all the individual elements over and so is O(n) by itself.
| # reversing all letters and all words in the string. | ||
|
|
||
| # e.g. reverse("hello world") will return "dlrow olleh" | ||
| def reverse(s) |
There was a problem hiding this comment.
👍
This works, but because you create a new array with each recursive call this is O(n2) for both time/space complexity.
| # Space complexity: ? | ||
| # Time complexity: O(n) | ||
| # Space complexity: O(n) | ||
| def reverse_inplace(s) |
| # Space complexity: ? | ||
| # Time complexity: O(n) | ||
| # Space complexity: O(n) | ||
| def nested(s) |
There was a problem hiding this comment.
👍 This works, but you have similar time/space issues with the above methods due to creating new arrays.
| # Space complexity: ? | ||
| # Time complexity: O(n) | ||
| # Space complexity: O(n) | ||
| def search(array, value) |
| # Space complexity: ? | ||
| # Time complexity: O(n) | ||
| # Space complexity: O(n) | ||
| def is_palindrome(s) |
There was a problem hiding this comment.
👍 This works, but you have similar time/space issues with the above methods due to creating new arrays.
| def digit_match(n, m) | ||
| raise NotImplementedError, "Method not implemented" | ||
| end No newline at end of file | ||
| if n == 0 && m == 0 | ||
| return 1 | ||
| elsif n == 0 && m > 0 || m == 0 && n > 0 | ||
| return 0 | ||
| elsif n % 10 == m % 10 | ||
| return 1 + digit_match(n / 10, m / 10) | ||
| elsif n / 10 > 0 || m / 10 > 0 | ||
| return digit_match(n / 10, m / 10) | ||
| else | ||
| return 0 | ||
| end | ||
| end |
There was a problem hiding this comment.
Consider n = 20 and m = 20, it should return 2, but returns 3 instead... hmmm
No description provided.