Recursive functions from O(n) complexity to O(log n)
r1 = reverse_string2(s[:mdpt])
   r2 = reverse_string2(s[mdpt:])


Here you go in recursion twice. In both recursions you will again recurse twice, etc, which makes $2*2*2... = O(2^{\log n}) = O(n)$. So the complexity is the same.