Reverse a string using binary search.
Asked in the Technical interview stage. Binary search is designed for locating values in sorted or monotonic data, so it does not directly reverse a string. Explain this limitation, then implement the correct in-place character-swap approach.
Implement reverse_string(s), which accepts a string and returns a new string containing the characters of s in reverse order. Preserve spaces, punctuation, letter case, and repeated characters.
def reverse_string(s):