Given the name, this does what it says. But given the requirement "Write a method to replace all spaces in a string with ‘%20’ without `.gsub` or `.sub`", it does not. 

```ruby
Replacement.new.join_and_substitute " "         # => ""
Replacement.new.join_and_substitute "a      b"  # => "a%20b"
Replacement.new.join_and_substitute "a\tb"      # => "a%20b"

$; = 'b'                                   # => "b"
Replacement.new.join_and_substitute "abc"  # => "a%20c"
```

Would be better to name after what it does (e.g. `escape_spaces`) than how it does it (`join_and_substitute`).

Also, no real value in making this an instance method on a class. Can usually spot this smell by looking for instantiating with no args, and then passing args to the instance methods. Either string should be passed to initialize, or it should be a module that's either extended itself or declared its functions as `module_function`s.